{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The autoreload extension is already loaded. To reload it, use:\n",
      "  %reload_ext autoreload\n"
     ]
    }
   ],
   "source": [
    "from __future__ import print_function\n",
    "import time\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "from cs231n.classifiers.fc_net import *\n",
    "from cs231n.data_utils import get_CIFAR10_data\n",
    "from cs231n.gradient_check import eval_numerical_gradient, eval_numerical_gradient_array\n",
    "from cs231n.solver import Solver\n",
    "\n",
    "%matplotlib inline\n",
    "plt.rcParams['figure.figsize'] = (10.0, 8.0)\n",
    "plt.rcParams['image.interpolation'] = 'nearest'\n",
    "plt.rcParams['image.cmap'] = 'gray'\n",
    "\n",
    "%load_ext autoreload\n",
    "%autoreload 2\n",
    "\n",
    "def rel_error(x, y):\n",
    "  return np.max(np.abs(x - y) / (np.maximum(1e-8, np.abs(x) + np.abs(y))))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "('X_train: ', (49000, 3, 32, 32))\n",
      "('y_train: ', (49000,))\n",
      "('X_val: ', (1000, 3, 32, 32))\n",
      "('y_val: ', (1000,))\n",
      "('X_test: ', (1000, 3, 32, 32))\n",
      "('y_test: ', (1000,))\n"
     ]
    }
   ],
   "source": [
    "data = get_CIFAR10_data()\n",
    "for k, v in list(data.items()):\n",
    "    print(('%s: ' % k, v.shape))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Affine Layer\n",
    "---"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Testing affine_forward function:\n",
      "difference:  9.7698500479884e-10\n"
     ]
    }
   ],
   "source": [
    "num_inputs = 2\n",
    "input_shape = (4, 5, 6)\n",
    "output_dim = 3\n",
    "\n",
    "input_size = num_inputs * np.prod(input_shape)\n",
    "weight_size = output_dim * np.prod(input_shape)\n",
    "\n",
    "x = np.linspace(-0.1, 0.5, num=input_size).reshape((num_inputs, *input_shape))\n",
    "w = np.linspace(-0.2, 0.3, num=weight_size).reshape(np.prod(input_shape), output_dim)\n",
    "b = np.linspace(-0.3, 0.1, output_dim)\n",
    "\n",
    "out, _ = affine_forward(x, w, b)\n",
    "correct_out = np.array([[ 1.49834967,  1.70660132,  1.91485297],\n",
    "                        [ 3.25553199,  3.5141327,   3.77273342]])\n",
    "print('Testing affine_forward function:')\n",
    "print('difference: ', rel_error(out, correct_out))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Testing affine_backward function:\n",
      "dx error:  (10, 2, 3) 1.0908199508708189e-10\n",
      "dw error:  (6, 5) 2.1752635504596857e-10\n",
      "db error:  (5,) 7.736978834487815e-12\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(231)\n",
    "x = np.random.randn(10, 2, 3)\n",
    "w = np.random.randn(6, 5)\n",
    "b = np.random.randn(5)\n",
    "dout = np.random.randn(10, 5)\n",
    "\n",
    "_, cache = affine_forward(x, w, b)\n",
    "dx, dw, db = affine_backward(dout, cache)\n",
    "\n",
    "dx_num = eval_numerical_gradient_array(lambda z: affine_forward(x, w, b)[0], x, dout)\n",
    "dw_num = eval_numerical_gradient_array(lambda z: affine_forward(x, w, b)[0], w, dout)\n",
    "db_num = eval_numerical_gradient_array(lambda z: affine_forward(x, w, b)[0], b, dout)\n",
    "\n",
    "print('Testing affine_backward function:')\n",
    "print('dx error: ', dx.shape, rel_error(dx_num, dx))\n",
    "print('dw error: ', dw.shape, rel_error(dw_num, dw))\n",
    "print('db error: ', db.shape, rel_error(db_num, db))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "ReLU Layer\n",
    "---"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Testing relu_forward function:\n",
      "difference:  4.999999798022158e-08\n"
     ]
    }
   ],
   "source": [
    "x = np.linspace(-0.5, 0.5, num=12).reshape(3, 4)\n",
    "\n",
    "out, _ = relu_forward(x)\n",
    "correct_out = np.array([[ 0.,          0.,          0.,          0.,        ],\n",
    "                        [ 0.,          0.,          0.04545455,  0.13636364,],\n",
    "                        [ 0.22727273,  0.31818182,  0.40909091,  0.5,       ]])\n",
    "\n",
    "print('Testing relu_forward function:')\n",
    "print('difference: ', rel_error(out, correct_out))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Testing relu_backward function:\n",
      "dx error:  3.2756349136310288e-12\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(231)\n",
    "x = np.random.randn(10, 10)\n",
    "dout = np.random.randn(*x.shape)\n",
    "\n",
    "dx_num = eval_numerical_gradient_array(lambda z: relu_forward(x)[0], x, dout)\n",
    "\n",
    "_, cache = relu_forward(x)\n",
    "dx = relu_backward(dout, cache)\n",
    "\n",
    "print('Testing relu_backward function:')\n",
    "print('dx error: ', rel_error(dx_num, dx))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\"Sandwich\" Layer\n",
    "---"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Testing affine_relu_forward and affine_relu_backward:\n",
      "dx error:  6.395535042049294e-11\n",
      "dw error:  8.162011105764925e-11\n",
      "db error:  7.826724021458994e-12\n"
     ]
    }
   ],
   "source": [
    "from cs231n.layer_utils import affine_relu_forward, affine_relu_backward\n",
    "np.random.seed(231)\n",
    "x = np.random.randn(2, 3, 4)\n",
    "w = np.random.randn(12, 10)\n",
    "b = np.random.randn(10)\n",
    "dout = np.random.randn(2, 10)\n",
    "\n",
    "out, cache = affine_relu_forward(x, w, b)\n",
    "dx, dw, db = affine_relu_backward(dout, cache)\n",
    "\n",
    "dx_num = eval_numerical_gradient_array(lambda z: affine_relu_forward(x, w, b)[0], x, dout)\n",
    "dw_num = eval_numerical_gradient_array(lambda z: affine_relu_forward(x, w, b)[0], w, dout)\n",
    "db_num = eval_numerical_gradient_array(lambda z: affine_relu_forward(x, w, b)[0], b, dout)\n",
    "\n",
    "print('Testing affine_relu_forward and affine_relu_backward:')\n",
    "print('dx error: ', rel_error(dx_num, dx))\n",
    "print('dw error: ', rel_error(dw_num, dw))\n",
    "print('db error: ', rel_error(db_num, db))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Softmax and SVM\n",
    "---"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Testing svm_loss:\n",
      "loss:  8.999602749096233\n",
      "dx error:  1.4021566006651672e-09\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(231)\n",
    "num_classes = 10\n",
    "num_inputs = 50\n",
    "x = 0.001 * np.random.randn(num_inputs, num_classes)\n",
    "y = np.random.randint(num_classes, size=num_inputs)\n",
    "\n",
    "dx_num = eval_numerical_gradient(lambda z: svm_loss(x, y)[0], x)\n",
    "loss, dx = svm_loss(x, y)\n",
    "\n",
    "print('Testing svm_loss:')\n",
    "print('loss: ', loss)\n",
    "print('dx error: ', rel_error(dx_num, dx))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Testing softmax_loss:\n",
      "loss:  2.3025458445007376\n",
      "dx error:  8.234144091578429e-09\n"
     ]
    }
   ],
   "source": [
    "dx_num = eval_numerical_gradient(lambda z: softmax_loss(x, y)[0], x)\n",
    "loss, dx = softmax_loss(x, y)\n",
    "\n",
    "print('Testing softmax_loss:')\n",
    "print('loss: ', loss)\n",
    "print('dx error: ', rel_error(dx_num, dx))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Two-layer Network\n",
    "---"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Testing initialization ... \n"
     ]
    }
   ],
   "source": [
    "np.random.seed(231)\n",
    "N, D, H, C = 3, 5, 50, 7\n",
    "X = np.random.randn(N, D)\n",
    "y = np.random.randint(C, size=N)\n",
    "\n",
    "std = 1e-3\n",
    "model = TwoLayerNet(input_dim=D, hidden_dim=H, num_classes=C, weight_scale=std)\n",
    "\n",
    "print('Testing initialization ... ')\n",
    "W1_std = abs(model.params['W1'].std() - std)\n",
    "b1 = model.params['b1']\n",
    "W2_std = abs(model.params['W2'].std() - std)\n",
    "b2 = model.params['b2']\n",
    "assert W1_std < std / 10, 'First layer weights do not seem right'\n",
    "assert np.all(b1 == 0), 'First layer biases do not seem right'\n",
    "assert W2_std < std / 10, 'Second layer weights do not seem right'\n",
    "assert np.all(b2 == 0), 'Second layer biases do not seem right'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Testing test-time forward pass ... \n"
     ]
    }
   ],
   "source": [
    "print('Testing test-time forward pass ... ')\n",
    "model.params['W1'] = np.linspace(-0.7, 0.3, num=D*H).reshape(D, H)\n",
    "model.params['b1'] = np.linspace(-0.1, 0.9, num=H)\n",
    "model.params['W2'] = np.linspace(-0.3, 0.4, num=H*C).reshape(H, C)\n",
    "model.params['b2'] = np.linspace(-0.9, 0.1, num=C)\n",
    "\n",
    "X = np.linspace(-5.5, 4.5, num=N*D).reshape(D, N).T \n",
    "scores = model.loss(X)\n",
    "correct_scores = np.asarray(\n",
    "  [[11.53165108,  12.2917344,   13.05181771,  13.81190102,  14.57198434, 15.33206765,  16.09215096],\n",
    "   [12.05769098,  12.74614105,  13.43459113,  14.1230412,   14.81149128, 15.49994135,  16.18839143],\n",
    "   [12.58373087,  13.20054771,  13.81736455,  14.43418138,  15.05099822, 15.66781506,  16.2846319 ]])\n",
    "scores_diff = np.abs(scores - correct_scores).sum()\n",
    "assert scores_diff < 1e-6, 'Problem with test-time forward pass'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Testing training loss (no regularization)\n"
     ]
    }
   ],
   "source": [
    "print('Testing training loss (no regularization)')\n",
    "y = np.asarray([0, 5, 1])\n",
    "loss, grads = model.loss(X, y)\n",
    "correct_loss = 3.4702243556\n",
    "assert abs(loss - correct_loss) < 1e-10, 'Problem with training-time loss'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Testing training loss (with regularization)\n"
     ]
    }
   ],
   "source": [
    "print('Testing training loss (with regularization)')\n",
    "model.reg = 1.0\n",
    "loss, grads = model.loss(X, y)\n",
    "correct_loss = 26.5948426952\n",
    "assert abs(loss - correct_loss) < 1e-10, 'Problem with regularization loss'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Running numeric gradient check with reg =  0.0\n",
      "W1 relative error: 1.22e-08\n",
      "W2 relative error: 3.34e-10\n",
      "b1 relative error: 4.73e-09\n",
      "b2 relative error: 4.33e-10\n",
      "Running numeric gradient check with reg =  0.7\n",
      "W1 relative error: 2.53e-07\n",
      "W2 relative error: 1.37e-07\n",
      "b1 relative error: 1.56e-08\n",
      "b2 relative error: 9.09e-10\n"
     ]
    }
   ],
   "source": [
    "for reg in [0.0, 0.7]:\n",
    "    print('Running numeric gradient check with reg = ', reg)\n",
    "    model.reg = reg\n",
    "    loss, grads = model.loss(X, y)\n",
    "    \n",
    "    for name in sorted(grads):\n",
    "        num_result = eval_numerical_gradient(lambda _: model.loss(X, y)[0], model.params[name])\n",
    "        print('%s relative error: %.2e' % (name, rel_error(num_result, grads[name])))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Solver\n",
    "---"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 10 / 10 - best_val_acc: 0.528000\n"
     ]
    }
   ],
   "source": [
    "model = TwoLayerNet()\n",
    "\n",
    "solver = Solver(model, data, \n",
    "               update_rule='sgd', optim_config={'learning_rate':1e-3},\n",
    "               lr_decay=0.95, num_epoch=10, batch_size=100, print_every=100, verbose=False)\n",
    "solver.train()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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ExERERGRXlNoi1KrCorJSI7jyvPHOg3bnobmWi1AIiIiIiIyxCi0RaEjNY28uauCmxfkERfjAWudBUjGXgC5C90uT0RERERE+kChLQo9VVhCwMKyRcGhkSUFULEdFn4OjHG3OBERERER6ROFtijj8wdYvb6Ej07JJD8jyWksXAHxI+GCm9wtTkRERERE+kyhLcq8vaeSo7VNLF883mmoPwY7noc5yyAu2d3iRERERESkzxTaoszKgsOMTo1nyYzRTsPG30KgFRbe425hIiIiIiJyVhTaokjJiQb+9GElSxfmEev1QMAPRb+B8y6DzClulyciIiIiImdBoS2KrC4sxgC3ti1A8uErUFuqZf5FRERERIYwhbYo0eoP8FRhKR+fNpqctESnsXAFjMiBqVe7W5yIiIiIiJw1hbYo8frOCo7XN7P8omAvW9V+2P8WzL8bvDHuFiciIiIiImdNoS1KrCooJictkb+aGlyApPBR8MTAvL92tzARERERETknCm1R4NDxU/x533GWLszD6zHQ0gCbfw8zroPUMW6XJyIiIiIi50ChLQo8ub4Yr8dwy8I8p2H7M9BUA4s+525hIiIiIiJyzhTahrhmn5+nN5RyxYwxjBmRANZC4a9h9EzIv9jt8kRERERE5BwptA1xr2w/yolTLSxbHFyApGwDHNniXEzbGHeLExERERGRc6bQNsStLCgmPz2Jj0zOdBoKV0BcKsy+1d3CRERERESkXyi0DWH7jtWx/uAJbluUj8dj4FQVbH8WLlwK8alulyciIiIiIv1AoW0IW1lQTKzXcPOCXKdh0+/A3+wMjRQRERERkaig0DZENbX6eWZDKVeeP5bMlHgI+KHoMZjwURg9w+3yRERERESknyi0DVEvbT1CbZOP5YvHOw373oDqw+plExERERGJMgptQ9SqgsOcl5XMReelOw2FKyBlLEy/xt3CRERERESkXym0DUG7jtSysbiaZYvyMcbAiYOw93WYfxd4Y90uT0RERERE+pFC2xC0qqCYuBgPN80PLkBS9BgYD8y/093CRERERESk3/UqtBljrjLG7DHG7DPGPNjN9i8YY7YZYzYbY/5sjJnZ/6UKwKlmH89tKuOaC8aRlhQHrY3OqpHTPw0jst0uT0RERERE+tkZQ5sxxgv8DLgamAnc1k0oW2WtvcBaOwf4T+C/+r1SAeDFLeXU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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe5aac08898>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.subplot(2, 1, 1)\n",
    "plt.title('Training Loss')\n",
    "plt.plot(solver.loss_history)\n",
    "plt.xlabel('Iteration')\n",
    "\n",
    "plt.subplot(2, 1, 2)\n",
    "plt.title('Accuracy')\n",
    "plt.plot(solver.train_acc_history, '-o', label='train')\n",
    "plt.plot(solver.val_acc_history, '-o', label='val')\n",
    "plt.plot([0.5] * len(solver.val_acc_history), 'k--')\n",
    "plt.xlabel('Epoch')\n",
    "plt.legend(loc='lower right')\n",
    "plt.gcf().set_size_inches(15, 12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Multilayer Network\n",
    "---"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Checking initialization ...\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(231)\n",
    "N, D, H1, H2, C = 2, 15, 20, 30, 10\n",
    "X = np.random.randn(N, D)\n",
    "y = np.random.randint(C, size=(N,))\n",
    "\n",
    "weight_scale = 5e-2\n",
    "model = FullyConnectedNet([H1, H2], input_dim=D, num_classes=C, reg=reg, weight_scale=weight_scale, dtype=np.float64)\n",
    "\n",
    "print('Checking initialization ...')\n",
    "for name in model.params:\n",
    "    if name.startswith('W'):\n",
    "        rel_err = abs(model.params[name].std() - weight_scale)\n",
    "        assert rel_err < weight_scale / 10, 'Weight %s do not seem right' % name\n",
    "    elif name.startswith('b'):\n",
    "        assert np.all(model.params[name] == 0), 'Bias %s do not seem right' % name\n",
    "    else:\n",
    "        pass\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Running check with reg =  0.0\n",
      "Initial loss:  2.3016482157750753\n",
      "W1 relative error: 3.44e-07\n",
      "W2 relative error: 5.01e-06\n",
      "W3 relative error: 1.40e-07\n",
      "b1 relative error: 1.48e-08\n",
      "b2 relative error: 9.48e-10\n",
      "b3 relative error: 1.28e-10\n",
      "Running check with reg =  3.14\n",
      "Initial loss:  6.94547942880963\n",
      "W1 relative error: 9.82e-07\n",
      "W2 relative error: 3.39e-07\n",
      "W3 relative error: 8.91e-09\n",
      "b1 relative error: 8.96e-09\n",
      "b2 relative error: 1.02e-08\n",
      "b3 relative error: 1.79e-10\n"
     ]
    }
   ],
   "source": [
    "for reg in [0.0, 3.14]:\n",
    "    print('Running check with reg = ', reg)\n",
    "    model = FullyConnectedNet([H1, H2], input_dim=D, num_classes=C, reg=reg, weight_scale=weight_scale, dtype=np.float64)\n",
    "    loss, grads = model.loss(X, y)\n",
    "    print('Initial loss: ', loss)\n",
    "\n",
    "    for name in sorted(grads):\n",
    "        f = lambda _: model.loss(X, y)[0]\n",
    "        num_grad = eval_numerical_gradient(f, model.params[name])\n",
    "        print('%s relative error: %.2e' % (name, rel_error(num_grad, grads[name])))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Iteration 1 / 40 - loss: 2.294937\n",
      "Epoch 0 / 20 - train acc: 0.320000; val_acc: 0.121000\n",
      "Epoch 1 / 20 - train acc: 0.400000; val_acc: 0.130000\n",
      "Epoch 2 / 20 - train acc: 0.420000; val_acc: 0.131000\n",
      "Epoch 3 / 20 - train acc: 0.640000; val_acc: 0.140000\n",
      "Epoch 4 / 20 - train acc: 0.740000; val_acc: 0.168000\n",
      "Epoch 5 / 20 - train acc: 0.700000; val_acc: 0.179000\n",
      "Iteration 11 / 40 - loss: 1.204400\n",
      "Epoch 6 / 20 - train acc: 0.860000; val_acc: 0.188000\n",
      "Epoch 7 / 20 - train acc: 0.880000; val_acc: 0.182000\n",
      "Epoch 8 / 20 - train acc: 0.880000; val_acc: 0.187000\n",
      "Epoch 9 / 20 - train acc: 0.880000; val_acc: 0.182000\n",
      "Epoch 10 / 20 - train acc: 0.880000; val_acc: 0.169000\n",
      "Iteration 21 / 40 - loss: 0.412206\n",
      "Epoch 11 / 20 - train acc: 0.980000; val_acc: 0.187000\n",
      "Epoch 12 / 20 - train acc: 0.980000; val_acc: 0.180000\n",
      "Epoch 13 / 20 - train acc: 1.000000; val_acc: 0.195000\n",
      "Epoch 14 / 20 - train acc: 0.980000; val_acc: 0.186000\n",
      "Epoch 15 / 20 - train acc: 0.960000; val_acc: 0.184000\n",
      "Iteration 31 / 40 - loss: 0.109977\n",
      "Epoch 16 / 20 - train acc: 1.000000; val_acc: 0.193000\n",
      "Epoch 17 / 20 - train acc: 1.000000; val_acc: 0.190000\n",
      "Epoch 18 / 20 - train acc: 1.000000; val_acc: 0.191000\n",
      "Epoch 19 / 20 - train acc: 1.000000; val_acc: 0.185000\n",
      "Epoch 20 / 20 - train acc: 1.000000; val_acc: 0.186000\n",
      "Epoch 20 / 20 - best_val_acc: 0.195000\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe5acc86d30>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "num_train = 50\n",
    "small_data = {\n",
    "    'X_train': data['X_train'][:num_train],\n",
    "    'y_train': data['y_train'][:num_train],\n",
    "    'X_val': data['X_val'],\n",
    "    'y_val': data['y_val'],\n",
    "}\n",
    "\n",
    "weight_scale = 1e-2\n",
    "learning_rate = 0.86e-2\n",
    "\n",
    "model = FullyConnectedNet([100, 100], weight_scale=weight_scale)\n",
    "\n",
    "solver = Solver(model, small_data,\n",
    "               print_every=10, num_epoch=20, batch_size=25,\n",
    "               update_rule='sgd', optim_config={'learning_rate': learning_rate})\n",
    "\n",
    "solver.train()\n",
    "\n",
    "plt.plot(solver.loss_history, 'o')\n",
    "plt.title('Training loss history')\n",
    "plt.xlabel('Iteration')\n",
    "plt.ylabel('Training loss')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Iteration 1 / 40 - loss: 2.302504\n",
      "Epoch 0 / 20 - train acc: 0.180000; val_acc: 0.069000\n",
      "Epoch 1 / 20 - train acc: 0.160000; val_acc: 0.073000\n",
      "Epoch 2 / 20 - train acc: 0.160000; val_acc: 0.077000\n",
      "Epoch 3 / 20 - train acc: 0.160000; val_acc: 0.079000\n",
      "Epoch 4 / 20 - train acc: 0.160000; val_acc: 0.079000\n",
      "Epoch 5 / 20 - train acc: 0.160000; val_acc: 0.079000\n",
      "Iteration 11 / 40 - loss: 2.298945\n",
      "Epoch 6 / 20 - train acc: 0.160000; val_acc: 0.079000\n",
      "Epoch 7 / 20 - train acc: 0.160000; val_acc: 0.079000\n",
      "Epoch 8 / 20 - train acc: 0.160000; val_acc: 0.079000\n",
      "Epoch 9 / 20 - train acc: 0.160000; val_acc: 0.079000\n",
      "Epoch 10 / 20 - train acc: 0.160000; val_acc: 0.079000\n",
      "Iteration 21 / 40 - loss: 2.297143\n",
      "Epoch 11 / 20 - train acc: 0.160000; val_acc: 0.079000\n",
      "Epoch 12 / 20 - train acc: 0.160000; val_acc: 0.079000\n",
      "Epoch 13 / 20 - train acc: 0.160000; val_acc: 0.079000\n",
      "Epoch 14 / 20 - train acc: 0.180000; val_acc: 0.077000\n",
      "Epoch 15 / 20 - train acc: 0.240000; val_acc: 0.095000\n",
      "Iteration 31 / 40 - loss: 2.300394\n",
      "Epoch 16 / 20 - train acc: 0.200000; val_acc: 0.093000\n",
      "Epoch 17 / 20 - train acc: 0.180000; val_acc: 0.082000\n",
      "Epoch 18 / 20 - train acc: 0.220000; val_acc: 0.101000\n",
      "Epoch 19 / 20 - train acc: 0.220000; val_acc: 0.101000\n",
      "Epoch 20 / 20 - train acc: 0.180000; val_acc: 0.104000\n",
      "Epoch 20 / 20 - best_val_acc: 0.104000\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe5aab76438>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "num_train = 50\n",
    "small_data = {\n",
    "    'X_train': data['X_train'][:num_train],\n",
    "    'y_train': data['y_train'][:num_train],\n",
    "    'X_val': data['X_val'],\n",
    "    'y_val': data['y_val'],\n",
    "}\n",
    "\n",
    "weight_scale = 1e-2\n",
    "learning_rate = 1.1e-2\n",
    "\n",
    "model = FullyConnectedNet([100, 100, 100, 100], weight_scale=weight_scale)\n",
    "\n",
    "solver = Solver(model, small_data,\n",
    "               print_every=10, num_epoch=20, batch_size=25,\n",
    "               update_rule='sgd', optim_config={'learning_rate': learning_rate})\n",
    "\n",
    "solver.train()\n",
    "\n",
    "plt.plot(solver.loss_history, 'o')\n",
    "plt.title('Training loss history')\n",
    "plt.xlabel('Iteration')\n",
    "plt.ylabel('Training loss')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "SGD + Momentum\n",
    "---"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "from cs231n.optim import sgd_momentum"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "next_w error:  8.882347033505819e-09\n",
      "velocity error:  4.269287743278663e-09\n"
     ]
    }
   ],
   "source": [
    "N, D = 4, 5\n",
    "w = np.linspace(-0.4, 0.6, num=N*D).reshape(N, D)\n",
    "dw = np.linspace(-0.6, 0.4, num=N*D).reshape(N, D)\n",
    "v = np.linspace(0.6, 0.9, num=N*D).reshape(N, D)\n",
    "\n",
    "config = {'learning_rate': 1e-3, 'velocity': v}\n",
    "next_w, _ = sgd_momentum(w, dw, config)\n",
    "\n",
    "expected_next_w = np.asarray([\n",
    "  [ 0.1406,      0.20738947,  0.27417895,  0.34096842,  0.40775789],\n",
    "  [ 0.47454737,  0.54133684,  0.60812632,  0.67491579,  0.74170526],\n",
    "  [ 0.80849474,  0.87528421,  0.94207368,  1.00886316,  1.07565263],\n",
    "  [ 1.14244211,  1.20923158,  1.27602105,  1.34281053,  1.4096    ]])\n",
    "expected_velocity = np.asarray([\n",
    "  [ 0.5406,      0.55475789,  0.56891579, 0.58307368,  0.59723158],\n",
    "  [ 0.61138947,  0.62554737,  0.63970526,  0.65386316,  0.66802105],\n",
    "  [ 0.68217895,  0.69633684,  0.71049474,  0.72465263,  0.73881053],\n",
    "  [ 0.75296842,  0.76712632,  0.78128421,  0.79544211,  0.8096    ]])\n",
    "\n",
    "print('next_w error: ', rel_error(next_w, expected_next_w))\n",
    "print('velocity error: ', rel_error(expected_velocity, config['velocity']))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "running with  sgd\n",
      "Iteration 1 / 200 - loss: 2.302386\n",
      "Epoch 0 / 5 - train acc: 0.081000; val_acc: 0.090000\n",
      "Epoch 1 / 5 - train acc: 0.135000; val_acc: 0.118000\n",
      "Epoch 2 / 5 - train acc: 0.119000; val_acc: 0.113000\n",
      "Iteration 101 / 200 - loss: 2.302964\n",
      "Epoch 3 / 5 - train acc: 0.131000; val_acc: 0.108000\n",
      "Epoch 4 / 5 - train acc: 0.130000; val_acc: 0.103000\n",
      "Epoch 5 / 5 - train acc: 0.162000; val_acc: 0.139000\n",
      "Epoch 5 / 5 - best_val_acc: 0.139000\n",
      "\n",
      "running with  sgd_momentum\n",
      "Iteration 1 / 200 - loss: 2.303270\n",
      "Epoch 0 / 5 - train acc: 0.106000; val_acc: 0.091000\n",
      "Epoch 1 / 5 - train acc: 0.171000; val_acc: 0.142000\n",
      "Epoch 2 / 5 - train acc: 0.100000; val_acc: 0.126000\n",
      "Iteration 101 / 200 - loss: 2.166146\n",
      "Epoch 3 / 5 - train acc: 0.259000; val_acc: 0.232000\n",
      "Epoch 4 / 5 - train acc: 0.279000; val_acc: 0.253000\n",
      "Epoch 5 / 5 - train acc: 0.309000; val_acc: 0.252000\n",
      "Epoch 5 / 5 - best_val_acc: 0.253000\n",
      "\n"
     ]
    }
   ],
   "source": [
    "num_train = 4000\n",
    "small_data = {\n",
    "  'X_train': data['X_train'][:num_train],\n",
    "  'y_train': data['y_train'][:num_train],\n",
    "  'X_val': data['X_val'],\n",
    "  'y_val': data['y_val'],\n",
    "}\n",
    "\n",
    "solvers = {}\n",
    "\n",
    "for update_rule in ['sgd', 'sgd_momentum']:\n",
    "    print('running with ', update_rule)\n",
    "    model = FullyConnectedNet([100, 100, 100, 100, 100], weight_scale=2e-2)\n",
    "    \n",
    "    solver = Solver(model, small_data, num_epoch=5, batch_size=100,\n",
    "                   update_rule=update_rule, optim_config={'learning_rate': 1e-2}, verbose=True)\n",
    "    \n",
    "    solvers[update_rule] = solver\n",
    "    solver.train()\n",
    "    print()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "RMSProp and Adam\n",
    "---"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "from cs231n.optim import rmsprop"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "next_w error:  9.524687511038133e-08\n",
      "cache error:  2.6477955807156126e-09\n"
     ]
    }
   ],
   "source": [
    "N, D = 4, 5\n",
    "w = np.linspace(-0.4, 0.6, num=N*D).reshape(N, D)\n",
    "dw = np.linspace(-0.6, 0.4, num=N*D).reshape(N, D)\n",
    "cache = np.linspace(0.6, 0.9, num=N*D).reshape(N, D)\n",
    "\n",
    "config = {'learning_rate': 1e-2, 'cache': cache}\n",
    "next_w, _ = rmsprop(w, dw, config=config)\n",
    "\n",
    "expected_next_w = np.asarray([\n",
    "  [-0.39223849, -0.34037513, -0.28849239, -0.23659121, -0.18467247],\n",
    "  [-0.132737,   -0.08078555, -0.02881884,  0.02316247,  0.07515774],\n",
    "  [ 0.12716641,  0.17918792,  0.23122175,  0.28326742,  0.33532447],\n",
    "  [ 0.38739248,  0.43947102,  0.49155973,  0.54365823,  0.59576619]])\n",
    "expected_cache = np.asarray([\n",
    "  [ 0.5976,      0.6126277,   0.6277108,   0.64284931,  0.65804321],\n",
    "  [ 0.67329252,  0.68859723,  0.70395734,  0.71937285,  0.73484377],\n",
    "  [ 0.75037008,  0.7659518,   0.78158892,  0.79728144,  0.81302936],\n",
    "  [ 0.82883269,  0.84469141,  0.86060554,  0.87657507,  0.8926    ]])\n",
    "\n",
    "print('next_w error: ', rel_error(expected_next_w, next_w))\n",
    "print('cache error: ', rel_error(expected_cache, config['cache']))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "from cs231n.optim import adam"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "next_w error:  1.1395691798535431e-07\n",
      "v error:  4.208314038113071e-09\n",
      "m error:  4.214963193114416e-09\n"
     ]
    }
   ],
   "source": [
    "N, D = 4, 5\n",
    "w = np.linspace(-0.4, 0.6, num=N*D).reshape(N, D)\n",
    "dw = np.linspace(-0.6, 0.4, num=N*D).reshape(N, D)\n",
    "m = np.linspace(0.6, 0.9, num=N*D).reshape(N, D)\n",
    "v = np.linspace(0.7, 0.5, num=N*D).reshape(N, D)\n",
    "\n",
    "config = {'learning_rate': 1e-2, 'm':m, 'v':v, 't':5}\n",
    "next_w, _ = adam(w, dw, config)\n",
    "\n",
    "expected_next_w = np.asarray([\n",
    "  [-0.40094747, -0.34836187, -0.29577703, -0.24319299, -0.19060977],\n",
    "  [-0.1380274,  -0.08544591, -0.03286534,  0.01971428,  0.0722929],\n",
    "  [ 0.1248705,   0.17744702,  0.23002243,  0.28259667,  0.33516969],\n",
    "  [ 0.38774145,  0.44031188,  0.49288093,  0.54544852,  0.59801459]])\n",
    "expected_v = np.asarray([\n",
    "  [ 0.69966,     0.68908382,  0.67851319,  0.66794809,  0.65738853,],\n",
    "  [ 0.64683452,  0.63628604,  0.6257431,   0.61520571,  0.60467385,],\n",
    "  [ 0.59414753,  0.58362676,  0.57311152,  0.56260183,  0.55209767,],\n",
    "  [ 0.54159906,  0.53110598,  0.52061845,  0.51013645,  0.49966,   ]])\n",
    "expected_m = np.asarray([\n",
    "  [ 0.48,        0.49947368,  0.51894737,  0.53842105,  0.55789474],\n",
    "  [ 0.57736842,  0.59684211,  0.61631579,  0.63578947,  0.65526316],\n",
    "  [ 0.67473684,  0.69421053,  0.71368421,  0.73315789,  0.75263158],\n",
    "  [ 0.77210526,  0.79157895,  0.81105263,  0.83052632,  0.85      ]])\n",
    "\n",
    "print('next_w error: ', rel_error(expected_next_w, next_w))\n",
    "print('v error: ', rel_error(expected_v, config['v']))\n",
    "print('m error: ', rel_error(expected_m, config['m']))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "running with  adam\n",
      "Iteration 1 / 200 - loss: 2.431072\n",
      "Epoch 0 / 5 - train acc: 0.149000; val_acc: 0.150000\n",
      "Epoch 1 / 5 - train acc: 0.390000; val_acc: 0.314000\n",
      "Epoch 2 / 5 - train acc: 0.482000; val_acc: 0.348000\n",
      "Iteration 101 / 200 - loss: 1.407113\n",
      "Epoch 3 / 5 - train acc: 0.544000; val_acc: 0.373000\n",
      "Epoch 4 / 5 - train acc: 0.571000; val_acc: 0.385000\n",
      "Epoch 5 / 5 - train acc: 0.605000; val_acc: 0.387000\n",
      "Epoch 5 / 5 - best_val_acc: 0.387000\n",
      "\n",
      "running with  rmsprop\n",
      "Iteration 1 / 200 - loss: 2.773366\n",
      "Epoch 0 / 5 - train acc: 0.129000; val_acc: 0.145000\n",
      "Epoch 1 / 5 - train acc: 0.380000; val_acc: 0.317000\n",
      "Epoch 2 / 5 - train acc: 0.440000; val_acc: 0.336000\n",
      "Iteration 101 / 200 - loss: 1.454176\n",
      "Epoch 3 / 5 - train acc: 0.454000; val_acc: 0.333000\n",
      "Epoch 4 / 5 - train acc: 0.514000; val_acc: 0.342000\n",
      "Epoch 5 / 5 - train acc: 0.551000; val_acc: 0.361000\n",
      "Epoch 5 / 5 - best_val_acc: 0.361000\n",
      "\n"
     ]
    }
   ],
   "source": [
    "learning_rates = {'rmsprop': 1e-4, 'adam': 1e-3}\n",
    "for update_rule in ['adam', 'rmsprop']:\n",
    "    print('running with ', update_rule)\n",
    "    model = FullyConnectedNet([100, 100, 100, 100, 100], weight_scale=5e-2)\n",
    "    solver = Solver(model, small_data,\n",
    "                  num_epoch=5, batch_size=100,\n",
    "                  update_rule=update_rule,\n",
    "                  optim_config={\n",
    "                    'learning_rate': learning_rates[update_rule]\n",
    "                  },\n",
    "                  verbose=True)\n",
    "    solvers[update_rule] = solver\n",
    "    solver.train()\n",
    "    print()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Train a good model!\n",
    "---"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 10 / 10 - best_val_acc: 0.413000\n",
      "learning_rate is: 1.55e-05, weight_scale is: 7.50e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.379000\n",
      "learning_rate is: 1.70e-05, weight_scale is: 7.84e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.458000\n",
      "learning_rate is: 1.91e-05, weight_scale is: 7.60e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.407000\n",
      "learning_rate is: 1.85e-05, weight_scale is: 7.73e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.420000\n",
      "learning_rate is: 1.65e-05, weight_scale is: 7.31e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.432000\n",
      "learning_rate is: 1.95e-05, weight_scale is: 7.09e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.416000\n",
      "learning_rate is: 1.83e-05, weight_scale is: 7.37e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.428000\n",
      "learning_rate is: 1.93e-05, weight_scale is: 7.80e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.408000\n",
      "learning_rate is: 1.72e-05, weight_scale is: 7.48e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.423000\n",
      "learning_rate is: 1.51e-05, weight_scale is: 7.24e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.397000\n",
      "learning_rate is: 1.89e-05, weight_scale is: 7.68e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.399000\n",
      "learning_rate is: 1.75e-05, weight_scale is: 7.36e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.420000\n",
      "learning_rate is: 1.88e-05, weight_scale is: 7.22e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.406000\n",
      "learning_rate is: 1.58e-05, weight_scale is: 7.22e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.388000\n",
      "learning_rate is: 1.64e-05, weight_scale is: 7.49e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.360000\n",
      "learning_rate is: 1.83e-05, weight_scale is: 7.99e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.453000\n",
      "learning_rate is: 1.88e-05, weight_scale is: 7.22e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.374000\n",
      "learning_rate is: 1.70e-05, weight_scale is: 7.35e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.411000\n",
      "learning_rate is: 1.77e-05, weight_scale is: 7.96e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.437000\n",
      "learning_rate is: 1.72e-05, weight_scale is: 7.41e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.410000\n",
      "learning_rate is: 1.90e-05, weight_scale is: 7.79e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.435000\n",
      "learning_rate is: 1.95e-05, weight_scale is: 7.49e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.400000\n",
      "learning_rate is: 1.67e-05, weight_scale is: 7.38e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.396000\n",
      "learning_rate is: 1.82e-05, weight_scale is: 7.44e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.430000\n",
      "learning_rate is: 1.98e-05, weight_scale is: 7.11e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.405000\n",
      "learning_rate is: 1.73e-05, weight_scale is: 7.15e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.367000\n",
      "learning_rate is: 1.57e-05, weight_scale is: 7.88e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.416000\n",
      "learning_rate is: 1.53e-05, weight_scale is: 7.07e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.408000\n",
      "learning_rate is: 1.72e-05, weight_scale is: 7.85e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.436000\n",
      "learning_rate is: 1.51e-05, weight_scale is: 7.14e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.391000\n",
      "learning_rate is: 1.56e-05, weight_scale is: 7.57e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.439000\n",
      "learning_rate is: 1.63e-05, weight_scale is: 7.43e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.411000\n",
      "learning_rate is: 1.86e-05, weight_scale is: 7.42e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.396000\n",
      "learning_rate is: 1.74e-05, weight_scale is: 7.87e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.401000\n",
      "learning_rate is: 1.55e-05, weight_scale is: 7.41e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.399000\n",
      "learning_rate is: 1.70e-05, weight_scale is: 7.59e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.425000\n",
      "learning_rate is: 1.64e-05, weight_scale is: 7.58e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.377000\n",
      "learning_rate is: 1.87e-05, weight_scale is: 7.06e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.413000\n",
      "learning_rate is: 1.80e-05, weight_scale is: 7.12e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.457000\n",
      "learning_rate is: 1.93e-05, weight_scale is: 7.47e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.447000\n",
      "learning_rate is: 1.61e-05, weight_scale is: 7.94e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.395000\n",
      "learning_rate is: 1.60e-05, weight_scale is: 7.99e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.415000\n",
      "learning_rate is: 1.90e-05, weight_scale is: 7.11e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.368000\n",
      "learning_rate is: 1.92e-05, weight_scale is: 7.67e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.367000\n",
      "learning_rate is: 1.62e-05, weight_scale is: 7.97e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.443000\n",
      "learning_rate is: 1.90e-05, weight_scale is: 7.39e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.402000\n",
      "learning_rate is: 1.58e-05, weight_scale is: 7.78e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.430000\n",
      "learning_rate is: 1.59e-05, weight_scale is: 7.92e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.365000\n",
      "learning_rate is: 1.90e-05, weight_scale is: 7.24e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.407000\n",
      "learning_rate is: 1.87e-05, weight_scale is: 7.89e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.427000\n",
      "learning_rate is: 1.52e-05, weight_scale is: 7.81e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.398000\n",
      "learning_rate is: 1.72e-05, weight_scale is: 7.64e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.440000\n",
      "learning_rate is: 1.71e-05, weight_scale is: 7.72e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.434000\n",
      "learning_rate is: 1.96e-05, weight_scale is: 7.68e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.451000\n",
      "learning_rate is: 1.58e-05, weight_scale is: 7.42e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.414000\n",
      "learning_rate is: 1.74e-05, weight_scale is: 7.92e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.428000\n",
      "learning_rate is: 1.50e-05, weight_scale is: 7.52e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.409000\n",
      "learning_rate is: 1.84e-05, weight_scale is: 7.18e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.436000\n",
      "learning_rate is: 1.99e-05, weight_scale is: 7.93e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.370000\n",
      "learning_rate is: 1.60e-05, weight_scale is: 7.38e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.376000\n",
      "learning_rate is: 1.52e-05, weight_scale is: 7.07e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.434000\n",
      "learning_rate is: 1.87e-05, weight_scale is: 7.78e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.418000\n",
      "learning_rate is: 1.59e-05, weight_scale is: 7.29e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.370000\n",
      "learning_rate is: 1.62e-05, weight_scale is: 7.34e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.439000\n",
      "learning_rate is: 1.61e-05, weight_scale is: 7.18e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.403000\n",
      "learning_rate is: 1.53e-05, weight_scale is: 7.06e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.415000\n",
      "learning_rate is: 1.50e-05, weight_scale is: 7.52e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.373000\n",
      "learning_rate is: 1.70e-05, weight_scale is: 7.27e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.400000\n",
      "learning_rate is: 1.60e-05, weight_scale is: 7.24e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.446000\n",
      "learning_rate is: 1.73e-05, weight_scale is: 7.33e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.446000\n",
      "learning_rate is: 1.50e-05, weight_scale is: 7.83e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.434000\n",
      "learning_rate is: 1.95e-05, weight_scale is: 7.66e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.449000\n",
      "learning_rate is: 1.58e-05, weight_scale is: 7.78e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.405000\n",
      "learning_rate is: 1.72e-05, weight_scale is: 7.22e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.431000\n",
      "learning_rate is: 1.62e-05, weight_scale is: 7.39e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.376000\n",
      "learning_rate is: 1.90e-05, weight_scale is: 7.31e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.408000\n",
      "learning_rate is: 1.92e-05, weight_scale is: 7.07e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.440000\n",
      "learning_rate is: 1.98e-05, weight_scale is: 7.86e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.408000\n",
      "learning_rate is: 1.58e-05, weight_scale is: 7.96e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.428000\n",
      "learning_rate is: 1.95e-05, weight_scale is: 7.34e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.435000\n",
      "learning_rate is: 1.66e-05, weight_scale is: 7.70e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.372000\n",
      "learning_rate is: 1.78e-05, weight_scale is: 7.36e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.454000\n",
      "learning_rate is: 1.79e-05, weight_scale is: 7.47e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.428000\n",
      "learning_rate is: 1.82e-05, weight_scale is: 7.75e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.426000\n",
      "learning_rate is: 1.97e-05, weight_scale is: 7.20e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.395000\n",
      "learning_rate is: 1.56e-05, weight_scale is: 7.35e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.452000\n",
      "learning_rate is: 1.90e-05, weight_scale is: 7.56e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.411000\n",
      "learning_rate is: 1.62e-05, weight_scale is: 7.04e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.395000\n",
      "learning_rate is: 1.53e-05, weight_scale is: 7.40e-04\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 10 / 10 - best_val_acc: 0.439000\n",
      "learning_rate is: 1.86e-05, weight_scale is: 7.88e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.433000\n",
      "learning_rate is: 1.63e-05, weight_scale is: 7.74e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.379000\n",
      "learning_rate is: 1.54e-05, weight_scale is: 7.14e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.410000\n",
      "learning_rate is: 1.68e-05, weight_scale is: 7.11e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.440000\n",
      "learning_rate is: 1.63e-05, weight_scale is: 7.98e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.432000\n",
      "learning_rate is: 1.52e-05, weight_scale is: 7.18e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.395000\n",
      "learning_rate is: 1.66e-05, weight_scale is: 7.13e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.426000\n",
      "learning_rate is: 1.92e-05, weight_scale is: 7.02e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.368000\n",
      "learning_rate is: 1.72e-05, weight_scale is: 7.43e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.403000\n",
      "learning_rate is: 1.60e-05, weight_scale is: 7.82e-04\n",
      "Epoch 10 / 10 - best_val_acc: 0.429000\n",
      "learning_rate is: 1.96e-05, weight_scale is: 7.59e-04\n",
      "==== Best Model ====\n",
      "hidden_dim:  [50, 50, 50, 50, 50]\n",
      "reg:  1.0\n",
      "normalization:  batch_norm\n",
      "weight_scale:  0.0007598335564915709\n",
      "dropout:  1\n",
      "==== Best Solver ====\n",
      "optim_config:  {'learning_rate': 1.9100154301990324e-05}\n",
      "lr_decay:  1.0\n",
      "batch_size:  100\n",
      "==== Best Val Acc ====\n",
      "best_val_acc:  0.458\n"
     ]
    }
   ],
   "source": [
    "best_val_acc = 0.0\n",
    "best_solver = None\n",
    "\n",
    "hidden_dims = [50] * 5\n",
    "\n",
    "for i in range(100):\n",
    "    lr = np.random.uniform(1.5e-5, 2.0e-5)\n",
    "    ws = np.random.uniform(7e-4, 8e-4)\n",
    "    model = FullyConnectedNet(hidden_dims, dropout=1, \n",
    "                              normalization='batch_norm', reg=1.0, weight_scale=ws)\n",
    "    solver = Solver(model, data, update_rule='adam', \n",
    "                    optim_config={'learning_rate':lr}, lr_decay=1.0, num_epoch=10, batch_size=100,\n",
    "                   verbose=False)\n",
    "    solver.train()\n",
    "    val_acc = np.max(solver.val_acc_history)\n",
    "    \n",
    "    print('learning_rate is: %.2e, weight_scale is: %.2e' %(lr, ws))\n",
    "    if val_acc > best_val_acc:\n",
    "        best_val_acc = val_acc\n",
    "        best_model = model\n",
    "        best_solver = solver\n",
    "        best_hidden_dims = hidden_dims\n",
    "\n",
    "print('==== Best Model ====')\n",
    "print('hidden_dim: ', best_model.hidden_dims)\n",
    "print('reg: ', best_model.reg)\n",
    "print('normalization: ', best_model.normalization)\n",
    "print('weight_scale: ', best_model.weight_scale)\n",
    "print('dropout: ', best_model.dropout)\n",
    "print('==== Best Solver ====')\n",
    "print('optim_config: ', best_solver.optim_config)\n",
    "print('lr_decay: ', best_solver.lr_decay)\n",
    "print('batch_size: ', best_solver.batch_size)\n",
    "print('==== Best Val Acc ====')\n",
    "print('best_val_acc: ', best_val_acc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 100 / 100 - best_val_acc: 0.535000\n",
      "learning_rate is: 1.91e-05, weight_scale is: 7.60e-04\n"
     ]
    }
   ],
   "source": [
    "best_val_acc = 0.0\n",
    "best_solver = None\n",
    "\n",
    "hidden_dims = [50] * 5\n",
    "lr = 1.91e-5\n",
    "ws = 7.6e-4\n",
    "\n",
    "model = FullyConnectedNet(hidden_dims, dropout=1, \n",
    "                          normalization='batch_norm', reg=1.0, weight_scale=ws)\n",
    "solver = Solver(model, data, update_rule='adam', \n",
    "                optim_config={'learning_rate':lr}, lr_decay=1.0, num_epoch=100, batch_size=100,\n",
    "               verbose=False)\n",
    "solver.train()\n",
    "val_acc = np.max(solver.val_acc_history)\n",
    "\n",
    "print('learning_rate is: %.2e, weight_scale is: %.2e' %(lr, ws))\n",
    "if val_acc > best_val_acc:\n",
    "    best_val_acc = val_acc\n",
    "    best_model = model\n",
    "    best_solver = solver\n",
    "    best_hidden_dims = hidden_dims"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f63d23f0588>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(best_solver.loss_history)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlYAAAHVCAYAAAAzabX0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzs3Xd4XNW18OHfmVHvvVuSi2xJ7rbcMAYbg+mmhQ4BQg0kgfSE9HLhS7lJCDXApVcTejcYDLZxk6usYltW731Gvcyc74+tUZ2RRl2y1/s8em7umTNnjiSjWbPW2mtruq4jhBBCCCFGzjDRNyCEEEIIcbKQwEoIIYQQYpRIYCWEEEIIMUoksBJCCCGEGCUSWAkhhBBCjBIJrIQQQgghRokEVkIIIYQQo0QCKyGEEEKIUSKBlRBCCCHEKHGZqBcOCQnR4+PjJ+rlhRBCCCGctm/fvipd10MHO2/CAqv4+HhSU1Mn6uWFEEIIIZymaVq+M+dJKVAIIYQQYpRIYCWEEEIIMUoksBJCCCGEGCUSWAkhhBBCjBIJrIQQQgghRokEVkIIIYQQo0QCKyGEEEKIUSKBlRBCCCHEKJHASgghhBBilEhgJYQQQggxSiSwEkIIIYQYJRJYCSGEEEKMEgmshBBCCCFGiQRWQgghhBCjRAIrIYQQQohRIoGVEEIIIcQokcBKCCGEEFNWRX0Luq5P9G10kcBKCCGEEFNSS7uFFQ9s4eEvsif6VrpIYCWEEEKIKSmvuhFdh/gQ74m+lS4SWAkhhBBiSjpR0QjAzFAJrIQQQogpxdTczv6C2om+DdFDdkUDADNCfCb4TrpJYCWEEEI44T9fneBbj39Dmallom9FdDpR2UB0gCeebsaJvpUuElgJIYQQTjhUVIdVhw/TSif6VkSnE5UNzAqbPNkqkMBKCCGEGJSu6xwpNgPw/qGSCb6b8VNY08SO7Kpxf90Oi5X3D5XQ0m5xeI7VqpNT2cjMUAmshBBCiCmlqLYZU3M7M0K8OVhYR2FN00Tf0pjTdZ3vvXqA65/ezU/fOERja8e4ve7v3kvn+68e4OMjjrODpeYWmtstzAybPI3rIIGVEEIIMagjxSYAfnLuHADeP3zyZ6325NZwqLCOVTOC+e/+Ii5+eHvXz2EsPb0tl5d3FwBwuMjx653obFyXjJUQQogpz9TcztPbcnj/UAlHik00jFM2Y6IcKTHhYtA4KzGMJbEBvHfw5A+s/vN1DsHebjx7yzJeuW0lTW0WLntsB09vy8FqHZtJ558cKeWBjzO5YH4Ei2MDSO8sv9pzonJyBlYuE30DQgghpp43Ugv584eZvY6F+LiTFOnLI9ctwd/TdYLubGykFZtJCPfFw9XIxoVR/P79DI6X15MQ7jvRtzYmjpXX80VWBT86ZzYerkZWzQzm43vX8LM3D/PnDzN5I7UIf6/ev+OYAE/+duVCjAZtWK95sLCO+14/yKJpAfzjqkU8+FEm/91XhNWqY7BzzROVDfh5uBDi4zas1xsrkrESQggxZKl5tcQEevLJfWt44oYl/Oy8OaTEBbLteBUHTrJZT7quk15sYn60HwAXLIjEoMH7h0e2OvBEZQMpf/5sVMtrRbVN1DW1jfg6T36dg6erkRtXxnUdC/R248kbl/I/l80jyNsNg0bXV3ObhbcOFPPNieE1uhfWNHHb83sJ9XXnqW+n4OFqZF60P41tFnKrG+0+50RFIzPDfNC04QVyY0UyVkIIIYZE13VS82tZkxBCYoQfiREq4Cg3t/BJetlJ19hdamqhurGNedH+AIT5erByRjAfHCrhh2cnDPuN/dXdBVQ1tPHVscqua49Eu8XKxkd20G6xct/Zs/n2qjhcjUPPn5SZWnj3YDHXr4gj0Lt3NkjTNK5fEcf1K+J6Hbft2bcptYg1CaFDer2G1g6+89xe2jqsvHbHKkJ83AG6fiZHik12y30nKhs4Y/bQXms8SMZKCCFOMs9sz+Ufm4+O2fULa5qpamhlSVxgr+Nhvu54uBrIr546gVVtYxt/eD+dBz/OdHiOLaM0N6o7+Ll4YRQ5VY2klzjuARpIW4eVtw8UA3CosG5Y1+hrb24NNY1thPt58KcPMjjvX1/z1bHKIV/n2R25WKw6t54+3enneLgauXRRFJ+mlw05Y/bCzjyOVzTw+A1Le82kmhXmg5uLwW5Gz9zSTkV966TrrwIJrIQQ4qTz4q58/v1F9pjNH0rNrwEgpU9gpWkasUFe5E+BjFWHxcoLO/NY979beXZHHk9+nUNVQ6vdc4+UmDFokBzp13Xs/HkRuBi0Yc+0+iKrgurGNiL8PAZc+TYUW7IqcHMx8O49q/m/m1KwWHVuemYPtz2/l+yKeqeuYW5p5+XdBVy4IIppQV5Dev0rU6bR1mHlvSH8TFraLTy7I48zZoeyelZIr8dcjQaSIv265of1ZFsRONmGg4IEVkIIcVKpb2knt0r1pPzq7bQBBywOV2p+Lb7uLsy207gdG+Q16UuB32RXceG/t/Pbd9NJivDjn1cvRNdhS2a53fOPFJuYFebTa9uUAC83zpgdygeHS4e1Qu6N1ELC/dy59fTplJlbKDePbJscXdfZklnOqhnBeLu7sD4pnE9/eAa/PD+RXTk1nP2Pr7npmT1sPVox4P2+uruAhtYO7jxjxpDvYV60P3Oj/NiUWuj0c945UExlfavD15sX5ceREhO63vueT1ROvs2XbSSwEkKIk0hmqcpM3Hr6dPKqm3jsy+xRf419ebUsjgu0u/orNsibgpqmfm+Ek8U/Nh/luqd309jWwRM3LOGV21dw6aJoogM82ZzuOLCaF9W/B+rihZEU1zVzoHBozfrl5ha+PFrBFUtiWBIXAIy8HHiispG86ibOTgrrOubuYuTOM2fy1U/X8uNzZpNRaubmZ/dy9j+/4sWdef1Kdq0dFp7ZkcvqWcHD7vm6KmUaR4rNpJcMnoWzWnWe3JbDvGg/TpsZbPec+dH+1Ld0UNAnWD9R2YCrURtyVm08SGAlhBAnEdsb2h1nzOCyxdE8/tUJjpc7VwZyhqm5nWMV9f3KgDaxQZ40tVmoahj5yrTR1txm4f+253JOcjif/+hMzpsXiaZpaJrGhrnhbMuu6jddvMLcQkV9q91A45zkCNxdDLx/aGirA9/aX4xVV6WzuVH+GA3aiMuBtmzbWUnh/R4L9nHn++sT2PHzs/jX1YvwcXfhN++ms+iPn7H4j5u57LEd/GjTQX7xZhrl5lbuPGPmsO/jkkVRuBkNvJFaNOi5n2eWk1PZyB1nzHS4AMD2c0/r02d1oqKBuGDvYTXnj7XJd0dCCCGGLb3ETIiPG2G+7vzqwiS83V24/+20URvoeKCgFl2HpQ4Cq7hgVZopqLG/RH4ibc4oo7HNwndWT8fD1djrsQ3JEbR1WPm6T7P3kc5A1V5g5ePuwvqkMN4/VMJ+J0dM6LrOG6mFLI8PYnqINx6uRuaE+3KoaGQZqy1ZFSRF+hEd4OnwHDcXA5cujubde1bz5ndP4/4LEjlvXiQeLkZ2nqjm7QPFLIzxZ01CiMNrDCbAy40Nc8N552AxrR0Dl6Gf/DqHmEBPLpgX4fCchHAfXI1avz6rE5UNk7IMCBJYCSHESSW9xExylD+aphHi48795yexN6+WN/Y51/fy4eFSrn1yF+0Wq93H9+XXYjRoLJoWYPdxW2lmMq4MfPtAMVH+HqyYHtTvsWXxgQR6ubI5o3c58EixGU2D5Ci/fs8BVXJt67By+WPfcMmjO3j3YLHDnx2on19OVSNXpsR0HVs4LYBDhXXDLp/WNbWxL7+W9Ylhg5+MWmSwNC6QO86YyYOXz+fVO1ay85fryfzjebxx12kjngt1Vco06pra+TyjwuE5+/JrSM2v5bbTp+MyQNbJ3cXInAjfXqXFdouV/OqmSbkiECSwEkKIk0Zrh4Xj5fXM7REEXJkSw/LpQTzwUZbDVW89vXeomJ051Q4buVPzakmK9MXb3f4YxGlBnmga/XpiJlplfSvbjldxyeJou1O8XYwG1ieFsyWzvFdgdKTYxPQQb3wcfL9L44LYef96/rBxLubmdu597SCn/+ULHtuabTdjsym1EG83IxfMj+w6tjDGH3NLB3nDDEa3Hq3EYtVZn+RcYOWIp5sRN5eRhwWrZ4UQ5e8xYBP7f77KIcDLlauWTRv0evOi/Ekr7m5gL6hposOqS2AlhBBibB0vb6DDqvcKrDRN44HL5tHU1sEDHzme1WRzsLOJ2rYJbk/tFisHC+tIieuf8bFxdzES6edBwSTLWL13qASLVefyxdEOz9mQHI65pYPdOTVdxxw1rvfk4+7CTafFs+VHZ/LMzSnMDvflr58c5fLHvunazw6gsbWDDw6XctGCqF6B6cLO7N/hYZYDt2RVEOLjxsIY+1nE8WY0aHxraQxfH6+kpK653+PZFQ18llnOt1fF4+U2+JzyudH+1DW1U9x5ra7NlyfhqAWQwEoIIaaMyvrWfs3VPdnKJXP7BAKzwny5MmUaH6eVDVimKjU1U25uJTrAk23Hq8jvs5VIVmk9ze2WfoNB+5oW5DXpMlZvHyhiXrTfgHv7rUkIxcPVwOaMMgCqG1opMbUwL9p+GbAvg0HjrMRwXrx1BU99O4WSumYu+vd2NqUWous6H6aV0tRm4aplMb2elxDmg4eroSuo7au+pZ2LHt7Gq3vsB7tbj1awbk6Y3UzcRPnW0mnoOry1v38T+9PbcnAzGrhpVZydZ/Y3v8cEdugetTBDeqyEEEKMxJVPfMNv3jni8PH0EjM+7i7E2VmCftrMYJrbLQNOCj9YoN7Yf3NRMkaDxit93sgdDQbtKy54cg0JPV5ez5FiM5ctjhnwPE83I2ckhLI5vVztD9j5sxrO6IFzksP5+N4zWDjNn5/99zDff/UAL+8uYEaoN0tie//8XIwG5kf7O1wZ+OHhUo4Um/ntu0f6NcnvzauhvqWD9XZWA06k2GAvVs0I5uXdBfzjs2PdX5uP8tb+Yq5MiSG4c+uawSRG+GI0dDewn6hsINzPHT+PybnRtwRWQggxBVSYW8irbuKzPj1APaWXmEmK9LWbuVger8p3e3Nr+j1mc7CwDjejgXWJoZydFMYbqUW9+oRS82uJ8vcgaoCVZ6CGhFbWt9LU5ji7Np7ePlCM0aCxcWHUoOeeOzeCMnMLacWmriX+fTOAzorw9+Dl21by03Pn8PGRMg4V1nFVyjS7zeELYgI4Umyy+7vdlFrI9BBvIvw9+N7L+6lp7B5l8UVmBW5Gw4hW8o2VW1bHU1nfyr+3HO/++iIbd1cDt69xfgCph6uRhDCfrhWaakXg5CwDgmzCLIQQU4LtTb6+pYO9eTWcNrP3G6nFqpNZauaqFPvNwGF+HsQFe7Enr4bbHUy5PlBYR3KUH+4uRq5fEcen6eV8ml7OxoVR6LrOvrxaltlZUddXbOfIhcKaZuZEOC69jQerVefdgyWsSQgh1HfwDMlZiWEYDRqb08vJqWogLtgLf8/hZ0aMBo171s1i5YxgXttTwDUOmrUXxPjT2mHlWHl9r0Auu6Ke/QV13H9BIqtmhHDF499w3+sHee7mZRgMGluyKlg1M9jhYoKJtGFuBNkPXDAq15oX7c/WoxXous6JigYuWeS4V26iScZKCHHKya1q5J3ODXCnirRiEwYN3IwGtmT2X8aeV91IU5vF4VgAgGXxQaTm1didadVhsZJWZOoao3D6rBBig7x4eVc+ACWmFsrMLYOWAYGuUmTfHq2JsDu3huK6Zi4boGm9p0BvN5bHB/FpehlpTjSuO2tpXCB/u3IhAV5udh9f1NXA3rsc+EZqEUaDxmWLY5gf48/vNibz9bFKHvkymxOVDeRWNY54NeBUMC/Kj6qGNo4UmzG3dEzaGVYggZUQ4hT01LYcfrjpIA0DNIJPNmlFJmaG+rBqZjBfZPUPrGz9QHMHCKyWxwdR29Tea6WazbHyBprbLSyOVW/wBoPGtctj2Z1bQ3ZFPal5qoToaDBoT7GdgdVkaGB/+0AR3m5GNiQ7HkLZ14a54RyvaKCwppm5Tjauj1RskBcBXq69trZpt1h5c38xZyWGdWXbrlsey+WLo/nn58d48KMsQGXZTnbzY1SA+85B9YFosq4IBAmshBCnoOzyBnQdMksdN3JPJrquc7jYxPwYf9YnhZFb1dgvOEovMeFq1EgIc1x6S4lXQdHevP5Twm373fUc/HllSgyuRo2XdxewL78WLzcjiU6U9gK8XPH1cBkwsEorMg06mXukWtotfJxWxnnzInttoDyYc5K7G8HnD3PPvKHSNI0FMQEc6pGx2nq0kqqGVq7uUd7VNI0/XzaPhDAfPs8sJzHCl5jAybdf3mhLivTDoMH7h0oAJnWPlQRWQohTiq7rHKtQe+elF49sf7bxUm5upbK+lQXR/l3Zib4DPDNKzMwO9x1wwOP0EG9CfNzYm9e/gf1gQR1B3m5d2SaAEB93zpsXyZv7ivjmRDWLYwMGnJJto2kasUFeDqevp5eYuPiR7dz2fCot7WMXXH2eWU59aweXLxlaP05MoFdX5m+4jevDsTDGn2Pl9TS3qZ/JptRCQn3dWTsntNd5Xm4uPH7DUnzdXbiwx6DRk5mXmwszQ32oqG/Fy81IhJ/HRN+SQxJYCSFOKdWNbdQ1tQMMOHpgMrENjpwfE0BMoBeJEb69+qxsowEGKgOCCniWxQexx87KwIOFdSyM8e+3Yu36FbGYWzrIrmhg6QCDQfuKC/ai0EHG6utjVQBsz67irpf2jUnmqrG1g6e35RLh58HKGcFDfv6tp0/n4oVRBHnb74kaCwtjArBYddJLTFTUt/BFVgWXL4m2G8zODPXhm1+exd3rZo3b/U0029iLGaHek2pmV18SWAkhTinHy1UJzcvNOGUCq7RiE0aDRnKkCpzOTgonNb8WU2eAWGZuoaaxzansyrL4IIrrmntNxK5vaSe7soFF0/r3T62YHtTVKOxM47rNtCAvCmubsNhplN+RXUVihC8PXjafrUcruful/bR1OB5cOlTl5hau+s9O0opN/OL8RIzDeBO+fEkMD1+7eNTuyRkLpqnf38HCOt45UIzFqnPlUsdbvvh6uA7re5uqbB8cJnMZECSwEkKcYrI7y4AbksM5XlE/qm/oY+VwkYmEMJ+uPqGzksKwWHW2HlNZq/TiwRvXbZZ3jkvoWQ48XGRC12FRbP8tUTRN4/Y1M/D3dO1qbHdGXJA37RadMnNLr+Mt7Rb25NWwelYI1yyP5X8um8eWrArueWX/gFPhnXW0rJ7LHt1BblUjT9+UwqVOrgacDMJ8PYjy9+BQkYlNqUUsjQtk1iRu0h5vtn63WRJYCSHE5HG8ogFfdxfOSgqn3aJzrLx+om9pQLquk1ZsYkFMdzZqUUwAIT5uXeXA9BIzmqYafAeTFOmHj7tLr8DKtpXKIgd7zV2zPJbUX5+N7xAmXccF2x+5sC+/lrYOK6tnqfLc9Svi+OMlc/kso5zvv3LAqeCqsr6VUlNzv7ERO7Kr+Nbj39Bh1dl05yrWzZl6q+UWxATwWUYZ2RUNXJUy8KT4U83CaQGcnRTO2cmTa8p8X05NFNM07TzgIcAIPK3r+v+zc85VwO8BHTik6/p1o3ifQggxKo6XNzAr3Id5ndmdjBLzsLYsGS8lJlXm67k6zWDQWDcnjE/T1d5/6SUmpgd7OzUk0mjQWBIXyN7c7pWBBwrqmBHqjb+X48DJ1Ymm9Z66Ri5UN3HazO7j27OrcDFoLJ/e3ff07VXxdFh0/vhBBn/9JItfXZjs8LrFdc2c96+vqW/pwMPVQHywN/HB3gT7uPH63kJmhHrz7C3LiR5kOvxktWCaP5+kl+HpauTCBYNPij+VeLgaefqmlIm+jUEN+l+KpmlG4FHgfCAZuFbTtOQ+5yQAvwRW67o+F7hvDO5VCCFG7HhFAwlhPsQHe+PtZuzauHiySuvRuN7T+qRwzC0d7MuvJb3EPOBg0L6WxQVytLyeuqY2dF3nYGFdrzELoyHS3wMXg9Zv5MKO7CoWxwbg0ycI/M7p07lhZSxPb89lV0613WtarTo/2XQIq1Xntxclc/2KOKIDPDlWUc+m1EJWzwrhjbtOm7JBFXRnDS9cENnvZySmBmd+a8uBbF3XcwA0TXsNuATI6HHO7cCjuq7XAui63n96nRBCTLDaxjaqGlpJCFP76SVF+k36BvbDRSZcDFq/+VFrEkJwMxp4a38RxXXN3LAyzulr2ralSc2rJTHSl6qGVhaPcmDlYjQQHejZazNmU1M7acUm7l2fYPc591+QxPbjVfx40yE+uW9Nv9Ljc9/ksTOnmr9cMZ+rl8X2esxq1Sf1SjFnLYkL5OKFUdx1pvN76YnJxZncbjRQ2OP/L+o81tNsYLamaTs0TdvVWTrsR9O0OzRNS9U0LbWysnJ4dyyEEMOU3TlUc1a4an6dG+VHZqnZ7hYvk0VasYk5Eb54uPYecOnt7sLKmcG8tV9Nonamcd1m0bQAXI0ae/NrOFDQ2V9lZ0XgSMUG9R65sDOnCl1X2+XY4+Xmwv9etYhSUzN/+iCj12PZFfX85ZMs1ieG2d0P8WQIqkCVux6+djGzBhj0KiY3ZwIre/9a+/4VcgESgLXAtcDTmqb1+/ij6/qTuq6n6LqeEhoa2vdhIYQYU7ZRCwlhtsDKn8Y2C3mTYE87e3Rd53BR78b1ns5OCqOjMygcSmDl4WpkQUwAe3NrOFhYh7uLgcTI0X8jjwvuPSR0e3YV3m5GFg6QHVsaF8h3185kU2oRn2WoIajtFis/fP0QXm5GHrxifr9ZW0JMJs4EVkVAz48HMUCJnXPe1XW9Xdf1XOAoKtASQohJ43hFPV5uRqL8VQ+OrS9pspYDC2uaMTW3Mz/afiBim8Ie4edBsI/7kK69LD6ItGITu3KqmRftP+TmdGfEBnlham7vmre1I7ualTOCB32te9fPJjnSj1++dZjqhlYe/iKbtGITD1w2nzDfyTtxWwhwLrDaCyRomjZd0zQ34BrgvT7nvAOsA9A0LQRVGswZzRsVQoiRyq5oYFaYT1fZaHa4L65GbcSBVXObhYc+P84nR0pHdWPnw8WqTOcoYxUT6MXCaQFdPVNDsXx6IO0WNbF9tBvXbWKD1GDRgpomimqbyK1qZLWDMmBPbi4G/nn1IszNHdz2QiqPfpnN5YujOf8U2b5FTG2DNq/rut6hadr3gE9R4xae0XU9XdO0PwKpuq6/1/nYBk3TMgAL8FNd1+0v6xBCiAlyvLyB02Z1L/N3czGQEOY74pWB7x0q5p+fHwPA1ai2jTkrMYwzZocS4Nm7AdvFaHB6m5S0YhNuRgOzwx2X6V66dTkuhqFnm5bGBqFpqMGgYxZYdc6yqmkks1RtW+NMYAUwJ8KXn5w7mwc+yiLS34PfbZw7JvcoxGhzai2nrusfAR/1OfbbHv9bB37U+SWEEJOOuaWdMnMLCX2agudG+fFFVgW6rg+7d+ejtDKmBXnyt28t5MujFXyZVcGfP8yEDzPtnn/Nsmn86dJ5g5bE0opMJEYOvLHyUIZ29uTv5cqccF+yyurHLrDqHBJaUNNEVmk9IT7uzA53fmr2rafPoKnNwvrEcPw9h/d9CjHeZEiGEOKUkF3Ru3HdZm6UH2/sK6Lc3EqE/9D7d0xN7ezIruLW06ezckYwK2cE88vzkyiqbWJ3Tg0tfTYYPlZWz/M78ykxtfDodYsdBkZWq5q4vnHh2A2JPCsxjNYOKzGBYzP3ycfdhWBvN/KrmvjmRBWnzwoZUvBqNGjcd/bsMbk3IcaKBFZCiFNCtm1FYJ+MydzOiebpJaZhBVafZZbTYdX79f/EBHoRs9TL7nOSo/y4/+0jXPnETp69ZRmR/v0Dm/yaJupbOhz2V42GH2+Yww/WJ4zpKrvYYC++OFpBVUOb02VAIaYy2StQCHFKOF5Rj7uLgZjA3sFOUqQfmjb8lYEfp5US5e/BwiEEQFcvi+XZm5dRVNvMZY9+Q2Zp/9c+bJu47mBF4GgwGrR+87FGW1yQF5X1rYDz/VVCTGUSWAkhpqR3DxbzzoFip88/XtHAzFAfjH0GSfq4uxAf7D2sBnZzSzvbjldx/vzIIWd9zpgdyht3rQLgyid28tDnx0krMnUNK00rMuHuYuiXYZtqbA3sM0K9iZrCW80I4SwpBQohphxd13nwoyzaLVYuXhjVL1iy53h5Aynx9qeLJ0f5caiwbsj38UVmBW0WKxfMjxjyc0Fly965ZzU/2nSQf205xj8/P0aIjztr54RyoKCW5Ci/MZkvNZ5ig9XIBUfT1oU42UhgJYSYck5UNlJmbgFgf0Ety+IHnuPU2NpBcV0z14b13woFVAP7h4dLMTW14+/l/Oqzj9JKCfdzZ/EItoOJ8PfgldtXUtXQytfHKvnyaCWb08swt3Rw6+nTh33dycK2CvDM2bLbhjg1SGAlhJhydmRXAWDQ4NMjZYMGVidsewQ62H9tblRnA3upidNmOpdZaWjtYOuxSq5bHjsq+9SF+Lhz+ZIYLl8SQ4fFSmZpPdNDvUd83Ym2ICaAj+9d028TaSFOVlM7xyyEOCVtz65iWpAnZ8wOZXNGOWqUnmPHHawItLHts5cxhAb2L7MqaOuwcv684ZUBB+JiNDA/xh8f95Pjs69aICD7+4lTgwRWQogppcNiZVdONafPCmFDcgQFNU0cLa8f8DnHKxpwNWrEBdkffxDi4064n/uQVgZ+cqSMEB93UgbJlgkhTi0SWAkhppS0YhP1LR2snhXC2clhaBpsTi8f8DnZFfXMCPHBZYBG8LlR/hwpNlHf0t7rq7XPgE9QewN+kVXBefPCnWqcF0KcOk6OPLMQ4pRh669aNSOYYB93lsQGsjmjjB+sT3D4nOMVDcyLHnjO1LzOrW3m/35zr+PuLgZuXzODu9fNxMtN/cn86lgFze0WLpgnmwILIXqTwEoIMaVsz64iOdKPYB93ADYkh/Pgx1kU1zUTbWdOUku7hYKaJi5bHD3gdW86LZ5Abzcs1t79WoeLTDzyZTb/3VfEL85P5JJFUXyUVkaQtxvLp0sZUAjRmwRWQogpo6mtg/35ddy8Or7r2Ia5ETz4cRab08u4ZXX/8QQFQdX2AAAgAElEQVQnKhvQdfptvtxXsI+73ecD3HRaHL9/L4P7Xj/Ii7vyySo1s3FR1IClRSHEqUn+Kgghpoy9ebW0Way9tkaZHuJNQpiPwz6rrs2XRzDBfGlcEO/es5q/XrGA/OpGGtssXDBfyoBCiP4kYyWEmDJ2ZFfhZjSwrM8E9Q1zw3niqxxqG9sI9Hbr9VhGiRmjQSM+eGQzoQwGjauWTeP8+RHsL6iTSeJCCLskYyWEmDJ2ZFexJC6gq4ncZkNyBBarzhdZFb2Of5pexv9tz2VNQghuLqPz587Xw5UzZ4fKXCYhhF0SWAkhpoSaxjbSS8ystjMZfUGMPxF+HmzOKOs69nlGOd97ZT/zov15+NrF43mrQohTmARWQogJ8/CW4+wvqHXq3G9OqDELqxP6B1aaprFhbjhfHaukuc3Cl1kV3P3yfpIj/Xjh1uX4eji//58QQoyEBFZCiAlRWd/K/352jJd25Tt1/o7sKnzdXVjgYB7VhuQIWtqt/OWTLO58aR+zI3x44Tsr8JOgSggxjiSwEkJMiH35NQBklQ68HY3N9uwqVs4MdjjiYMWMIHw9XHjumzxmhfrw0q0r8PeSoEoIMb4ksBJCTIh9+aoEmF3RQLvFOuC5BdVNFNY0D7gSz9Vo4LrlsSyNC+Sl21YQ4OXm8FwhhBgrMm5BCDEhUvNr0TRos1jJqWxkToTjAZ7bO7exWT0reMBr/vKCpFG9RyGEGCrJWAkhxl1Lu4UjxSbWzg4FIKvMPOD5O7KrCPdzZ2bo8Id8CiHEeJDASggx7g4XmWi36FyVMg1Xo0bmAH1Wuq6zO7eGVTOCZXaUEGLSk8BKCDHuUjsb11fMCGZWmC+ZpY4zVoU1zVQ1tLI0LtDhOUIIMVlIYCWEGHf78mqZEepNkLcbSZG+A5YCDxSqJvfFsRJYCSEmPwmshBBOKTO1cM2TO6kwt4zoOrqus6+glqWdgVJShB/l5lZqGtvsnr8/vxYvNyOJAzS3CyHEZCGBlRDCKVuPVrArp4bduTUjus6JykbqmtpJ6dxIOTFSBUxZDsqB+wvqWBDj73B+lRBCTCbyl0oI4ZT0EhX45FU1jug6tsGgS+OCAEiK9AMgs6x/A3tzm4XMUjNLpAwohJgiJLASQjglvcQEQO4IA6vUvFoCvVyZGeoNQIiPOyE+7nYb2A8X1dFh1SWwEkJMGRJYCSEGZbHqXSMRcqtHmrGqZWlcYK/RCY4a2PcX1AGwODZgRK8phBDjRQIrIcSgcqsaaW634OvuMqKMVXVDKzlVjV1lQJukSD+OlTfQ0Wdrm/0FtcQHexHs4z7s1xRCiPEkgZUQk8QPXj3Ao19mT/Rt2GUrA54zN5y6pnZqHazgsymsacJq1fsdt2Wg+s6kSozwpa3D2ito03WdAwW1UgYUQkwpElgJMQmYW9r54HAJXx2rnOhbsSujxIyb0cCG5HBg4HJgmamFtX/fyh8/yOj3WGp+Da5GjQUx/r2O22tgV4NB21gsg0GFEFOIBFZCTAL78mqx6lBc2zzRt2JXeomZ2RE+JISr0QgDrQxMKzZhseo8900eHxwu6fXYvrxa5kX74+Fq7HV8ZqgPLgatVwN712DQadJfJYSYOiSwEmIS2JVbDUCZuaVfn9FE03Wd9BITcyP9mRbohUEbeGWgbR7Vwhh/fv7fw5yobACgtcPC4WITKXYyUG4uBmaF+fSaZSWDQYUQU5EEVkJMArtz1Gwni1WnvL51XF+7qqGVF3fm2e2JAig1tVDb1M7caD/cXAxMC/IiZ6DAqqyeuGAvnrhxKe6uRr770j6a2jo4UmyircPar3HdJinSj6wepUAZDCqEmIrkL5YQE6yxtYO0YhPzo1Xf0XiXA1/fW8hv3k3vKr31ZRsMOjdK9UHFB3sPWArMLDWTGOFLpL8nD12ziOMVDfz67SOk5qnrO9pMOTHCl1JTC3VNbTIYVAgxZUlgJcQE25dfi8Wqc/mSaACK65rG9fVtWaLN6eV2H08vMaFpkBihAqvpId7kVjWi6/0zXM1tFnKrG7ua0dckhHLf+tm8daCYJ7/OIS7Yi1Bf+6MTuhrYS+tlMKgQYsqSwEqICbY7txqjQePihVHA+GesbA3jn6aX2Q2W0kvMTA/xxtvdBYAZod40tVmotFOyPFpej653B2EA3z9rFmfMDqW6sc1htgq69wzMLDXLYFAhxJQlgZUQE2x3Tg3zov0J8XEn2NuN4rrxC6xa2i3kVDYQ4edBXnUTxysa+p2TUWJmblT3eIT4YLUVjb0+K1vzeXJkd2BlMGj86+pFLI8PYmNn8GhPaOf3n1VmlsGgQogpSwIrISZQc5uFQ0V1rJyuGrqjAz0pGseM1fHyBqw63HnmDAA2p5f1ery2sY3iuuau/ipQpUCwP3Ihs9SMt5uRmEDPXseDvN3YdNcq1s4Jc3gvmqaRFOlHZmm9DAYVY6f6BJSlTfRdiJOYBFZC9GBqbufPH2TQ2NoxLq93oKCWdovOihmdgVWA57hmrDI79+c7c3Yoi6YFsDmjd59VRmnvxnWAqABP3IwGuyMXMsvqSYz0w2DQ+j3mjMQIX9JLTDIYVIyNFjM8dxE8uRYOvDzRdyNOUhJYCdHDp+llPL09ly1ZFePyertyazBokBLfHViV1DXb7XUaC5mlZjxdjcQFe3Pu3AgOF5ko6RHY2bay6VkKNBo04oK9+gVWuq53rQgcrqRIP2xTH5ZIf5UYbV/8GepLIXIRvHs3fPkAjNN/a+LUIYGVED0cKlRN06l5NePyertzqkmO8sPPwxVQpcCWdivVg+zFN1qySuuZHeGL0aCxYa7arubzzO6sVXqJmUh/D4K83Xo9L75zZWBPJaYW6ls6SOzRXzVUtgZ2Lzcjc8JlMKgYRcX7YM+TsPx2+M4nsOh6+Oov8M53oWN8/nsTDnS0QdaHYBmfSsFYk8BKiB4OF6kMzZ7csQ+sWtotHCisY8X04K5j0QGqN6lkHMqBuq6TVWYmqTPDNDPUh5mh3nzao88qvcTcqwxoMyPEm/yaJiw9hop2N64PPyCaFaa2tpHBoGJUWTrg/XvBNwLO+jUYXeGSR2Hdr+DQq/DyFdBcN9F3eera/k947TrY+/RE38mokL9cYspoaO2gor5lzK7f0m4hq8yMl5uRo+X1mJrbx+y1QGXH2jqsrJjePYk8urPpezxGLpSbW6ltau+aHwWwYW4Eu3JqMDW109ymVgwmR/n3e258iDdtHdZeAaBtbMOciOFnrNxdjNx55gxuPi1+2NeYkmrzJWsylnY/oRrWz/8LeHT+e9Y0OPNncNl/IH8nvHL1qVUWfOceeONmsIzt37lBmYphx7/U/97xL2gf4G+8qQgeWwXHPxufexsmCazElPH799K54KHtNIxRY3lmqZl2i85VKdPQddiX7zhrZbXqvLanAFPT8P8o7c6tQdNgeY/AKibAC2BcGthtjes9e6I2JIdjsep8cbSczDIzVh27GSvbysCe5cDMsnpig7zw6Zx3NVw/PTeR8+ZFjugaU0rlMXh4qSpLidFXVwBf/g/MPh+SNvZ/fOE1cO4DULhLlQtPBZXH4OBLkP42fPjjiQ0oP/89WC2w8WHV/3bgRcfnfvY7qMiAzb8B6+TaU7UnCazElLE/v5aqhlae2Z47Jte3lQG/vSoOV6PGnlz7W7wA7Mmr4RdvpfH3zUeH/Xq7c6uZE+5LgFd3/5KfpwvebsZxGblgyzD17IlaGBNAmK87m9PL+21l01PXyIXqHoHVCBvXT1mf3g/Wdjjw0knTYzJp6Dp8+BNAgwv+prJU9iy6Ftx8IPXZcb29CbPnSTC6QcqtsP952PHQxNxH4V5I2wSnfR8W3wjTVqiyYIed/VILdsOR/0L0UqjMhKz3x/9+nSSBlZgSGls7yK1uxNWo8dTXOdSMQXP3ocI6Qn3dmR7izfxof/YO0MBu60N6fW8hZaahlyfbOqzsy69l5YzgXsc1TSM6cHxGLmSV1hMd4Im/p2vXMYNB45zkcL46VsmB/Fr8PV27+r56CvN1x8vNSE6lCqya2yzkVTWOqHH9lHT8M8j+DGashYYyOLFlou/o5JL5Hhz/FNbdDwHTHJ/n7gvzr4Qjb0Kz4w9UJ4UWExx8BeZ9Cy74O8y7Aj7/ncpejSerFT75OfhEwOk/7C7NmovV/dk71zcKbnwHgmfBV3+dtFkrCazElJBZakbX4UfnzKGxrYPHt2aP+mscKqpjYYw/mqaxLD6Iw0V1tLRb+p2n6zqb08uZF+2HVdd54qsTQ36ttOI6Wtp791fZRAd4jkuPVWapmSQ7jebnzo2gqc3C+4dLmBvlh2bnU76maUwP8e7KWB0rr8eqj6xx/ZRjaVfZqqCZcM0r4B06cBlEDI2uw5Y/Qvh8WHHX4Oen3AIdzXDo9bG/t4l04CVob4QVd4LBAJc8BtNWwlt3QuGe8buPtE2q9Hr278DdRx2buV5lpLb9o3fv1+HXoOQAnP178PCDM34K5Ufg2Mfjd79DIIGVmBJsZalLF0dx+ZIYnt+ZP6or58wt7ZyobGRhjJqdtCw+iHaL3jV+oaeMUjPFdc3cuDKOy5dE8+qeAirMjrNW7RYrHZben6x25ahs2HJ7gdU4ZKxa2i3kVDX22tPPZuWMYHzdXWi36HbLgDY9Ry5kdfVrScbKaXufhqpjcO7/gJs3LLgajn4MjVUTfWcnh+J9UJ2tAgijE31/kQshOgVSnzl5m9itFlUGjF0FUYvUMVcPFdj7RcGr10BNztjfR2uD6q2KWgILruk+rmlw5i/AVACHXutx7h/U72b+lerYvG9B4HTVlzgJf1cSWIkpIb3ERJC3GxF+Htx3dgLo8O8tx0ft+kc6+6sWTFOBVUq8mvptrxy4Ob0cgwZnJ4Vzz7pZdFh1nvza/h+j7Ip6Vj34BYm/+YR1f9/KLc/u4Q/vp/P+oRISwnzs7oUXHeCFqbl9zJr01X01YLHqXXOjenJzMbAuUW09M9fOikCbGSHeFNU209ZhJbO0Hi83I7FBXmN2z5OarkPutoFXNPXUWA1bH4QZ62D2eerY4hvA2gGHxyBjYrVA0T7VtHyqOPQauHhA8iXOPyflFqg6CvnfjN19TaTjm6E2TwWbPXkHw/X/Bd2qVt29fCXseUqtVh0LO/6lGtXP+38qa9ZTwjlqgOu2v6uew+3/UGXy8//Sfa7RBc74CZQeUt/TJCOBlZgSbPOUNE0jJtCL61fGsim1kGw7mwYPx8EilZlaGKMCiQAvN+aE+7Inr3+/xeaMclLiggj2cScu2JtLFkXx0u58qhp6N1xWNbRyy3N7AZ3bz5hBUqQvZeZWXttTSFZZfVfw0td4jFywNa4nOeiJunRxFK5GjaUDbCsTH+yNxapTWNtEZqmZORG+w97KZso7sQWevwgeXQ6Z7w/+KXrrA+qT+HkPdjdUhyWpT+X7XxydT+FNNZD2X3jrDvh7Ajx9Fjy+SpWCTnYdbapfas4FqnTkrLmXg7u/ylpNdpYOVTIrOej8c3Y9Dn7RkHhR/8dCZsEtH8PSm6HqOHz0E3hoATyyHHY9MWq3TV0BfPOwyjrFruj/uKbBmT9XAeC2v8M3j6hsbkxK7/MWXA0BsZMyayWBlZj02jqsHCuvJ7lHWeqedbPwdDXyj8+cW5Wn6zr1LY5HIxwuNBEX7NVrhd6y6YHsz6/tNQSzsEYFEbYp5bZ7aeuw8tS27qxVS7uF255PpbK+ladvWsbPz0vkseuX8vG9a8j447ns/dXZ/Py8RLv3YmsWL65rcup7G46ssno8XA3EB3vbffysxHD2/+Ycpg2QgZoe2jlyobKRrLJ6h0HahNN1aB/jnrWcr8Dgqkp6r98AL2yE8gz755ZnqDfulO+oYKqnxTeoFU8l+0d2P5/9Dv42E968VTXIzzobLn8K4tfAu/fAF/8z6d6MaG2AZ85TP7/9L0J92eDPcST7c2iuUW++Q+HmpVYIZrw7PiXZiix4aj0cfHVovw+rBd65C7b8AV65CurLB39ORSbkfgXLblUDUu0JS1KZoR8cgO/tg3MfVHO/Pvk5HP3E+fsbyNd/V5mxs3/v+Jw556veuK0PgsFo/1yjK6z5sSr5TrJFHxJYiUnveEV9Z79Pd1kqxMed29bM4KO0Mg4XDT4x+c39xSz/ny0Oe5dU43rvvemWxQfR0NrRld2B7tWAG5Ijuo7NDPXh4oVRvLgzn5rGNqxWnR++fpBDRXX86+rFLJrW+7qaphHq647RQXYnZpwyVnPCfR3eA4Cvh4M/vp2mdwZlO3OqMTW3d01wn1R0Hd64SZU37C3hHi35O1TT7Z3b1Eqr0sPwxGr44Ieql6rn1/v3grufWqnW17zLwcVzZFml8nS1fD7xIrj1c/hpNlz+JCy4Cq5/AxbdAF//Fd6+a3INJT3yJhTsVMvq3/se/O8ceGINbPmTKp0OxeHXwCsEZq0f+n0svUWNvzg4xps0tzbAphtVYPDOXfDW7WqT6MFYLfDO3ZD2BizrfM6btw4+qmP3f1RpdMnNg7+GpqkM1qq74eYPIHwevPf9of8e+qorVCv+lnx74FWathWCoFYM+kXZP2/hdeAXA1snV9ZKAisx6Tmap3TbmukEernyt08Hz1ptPVpBc7uFF3f27xmoMLdQamphQUzvfqJlnRsj99zeZnNGOYkRvsQG987kfG/dLJrbLTyzPZe/fJLFx0fKuP/8JM6bF8FQhfq442Y0UDRGDezdmyWPLMMU6O1GgJcrH6eVAkzOUQsHXlLZh9pcOLxpbF6jtV6VY+JXq96P5berT/wpt8K+59QAxp5fRXvhnD+AV/+FC3j4q56gtP9C2zAzllv+pAK3ix+CacvUJ34boytc8ojayuXwa/DS5ZNnK5fUZyAsGX5yDO7aAet/p2ZLbf+HCjyc1VynsivzrnCcmRlIWCLEnqZmWg20nF/XVRC77R9qVlb1EFYH6zq8/wPVXP/td2Ddr+HIW/CfNVCU6vh5Viu89wP1u1v3a7jw73DRPyFvmxqC6khzreo5m3+l6qcaChd3NZ2+pQ4+uG9kAYxtwvrq+wY/N3kj3LFVZaUc3psbrPkhFO1R2bhJQgIrMelllKhtZqb3KVv5erjy7VXxbDteRe0Ac610Xe9qQn9tbwHNbb1HKBzqbFzvm1mKCvAkOsCz67nVDa2k5tWwYW7/YCkh3JcL5kfyn69P8J+vc7hhZSy3rZk+9G8WNUsqMsBjSBmrlna1/UxrR//xEH1V1Nu2shl5hik+2JuSzjlecyZbxqo2Dz75hSp/RcyHb/49NnNvCneDboG41d3HvILUm97P8+Enx3t//TxX9bE4svgGaDVD1gf9H6svHzjgKtillqCffq/9wA16b+VSsAv+vQieOV+VCLf/EzLeg6rswd9AO1pVMDEaP9Pi/VB6UJVHNQ0i5sGaH8F3PlZloOOb4fjnzl0r412wtMLCIZYBe0r5jgrGc7d2H9N1MJeozYLfvxf+ORceP02V4/Y/D4+ugM9+61zWae/TKkN31q/VDLMzfwq3fKSyUc+cq4K1hsrevwOrVQU2B19SK+fO/Kk6vuhaWHKTCkAdlev2v6BGSfRtWndWxDwVjGe+5/gDSkfbwOVbc4m6j8XXD5yt6ilqce8PBvYsvhFC5qhs2CQxsr0nhBgH6SUmkiL97DZGr0kI4aEtx9mdW+1wG5TCmmbKza1cvDCK9w+V8O7BYq5ZHtv1+OGiOowGze4KuOXTg9h2vApd19mSVYFVV9u+2PP9s2bxcVopa+eE8vuL59qd/+Ss6IChjVz4xZuHeedgCQZNBYTTQ7yZHuLNaTOD+/1c7E1cH64ZId4cLKwjJtATv0FKh+PKVi7RDHDp4yqAeOs2NSxyzvmj+1p5O0AzqqnRfXn4AUP8OcethsB4NdNqwVXqzbVgJ+x6TL2pRy2Gmz5Q/UA96bpalu4T7tzcpoXXQECcyurVnIBjm6GxRwkyIA4SNqiv+NPV65mKVM/W8c8gZ6uah+QdplZyJWyAmeu69+IbitRnwNVLfb99rbhLZY8+/SXMOHPwLNTh1yE4QS3lH67kjfBJMGz+LQQ/B9U56mfU3hnUuvnCzLWw9heqf00zqJlZOx5SmaH1v4OF1/Zf8QZqdeYnv4SEc2H1D7uPx66Eu7aroG3LH9SXux8Ez1Szztqb4OhHsOYn6nV7Ov+vas7T23fAnV+rfz+6rrKjux5XwabtA8ZwnfZ9OPYJfPRTlZ31j+l+7Nin6nuqK4Ab34bpa/o/f8dDqrfq9B8N/x7scXGHu3fZ/1lPEAmsxKRmtepklJi5YmmM3ccXxATg5WZk5wnHgdWezozTPetmkl3RwLM78rh62bSuwOdgYR2zw33xdOv/ySglPpC3DxSTV93E5vRyogM8Hc52Sozw4/MfnUl0oCcuxpH9Rx4d4MlXxyqdOreuqY2P0spYnxjG3Gh/8qoaya1q5O39xbywM5+/fmsBV6V0f0LMKqsHIGkUZk7Fd25tM+ka13c9pvqeLn1cfTr2jeh+4xvtwCp/hwp2bEMOR8pgUH1QX/4Zdj6qAoXSQ+ARoN6sD76i3kCvfKH3m0n251DwjerxcrO/KKGfuFXqy6bFrAKI4v0qeDr4Mux9SvXm+Meo0hWAf6zKlIQlq+8/60N1rsFFzUha+wsVjDmjuU5lb+Z/y35Q5uKuZn29dh3s/T9YOUDQWJuv7uesXzvevsYZLu4qoPvqLyqgCZ6pgoWgGarBO2a5KkP1dOljqvz78c/g3bthz39g/lUq4AxJUPfTVKN6/nwj4bIn+gcDngFw5XOQt10NwKw+oX4fRXtUNmjNj+1/b64ecNXz8J+1sOkmWHWP2ni6eJ9a5bjqbjjtB8P/eYDKHF36ODy+Wn1oufEd9e/h0/vV7gHBCRAYB69fr3r7Qmd3P7e+TJXFF16jzhltkyioAgmsxDi7/YVUkiP9+OE5swc/GcivaaKxzeIwmHFzMZASH8Q3Jxw3Vabm1eDv6crsMF9uOS2en715mJ051Zw2MwRd1zlcZOJ8B71Qyzv7rL46WsG245VctyJ2wEzUjNDReXONDvSkor6V1g4L7i4Dp8LfPVhCm8XKjzfM6bVyst1i5TvP7eX+t9KIDvBk9awQQGWsovw98PcaeYbJtmfgpGpcL89QQVTiRSoQAZXlWHWPWt1UuAemLR+d12prUkHIqrtH53o2i65VPTOf3g+hiXDRv9QKNzcv1Uj86S/h89/Chj+r861Wla0KjFdloeHy8FNBYtRitXqsvQXyt6sgqyZHNR0nnAuhc7rf3Jd1Nk4Xp6rMxeFN8NyFkHwpbPiTWhI/kMObVPCS8h3H58y5AKafqVaJLbjKcZkzrbNMNd9O5muozvyZyg4N5U07Zinc+plqLN/+D9j8K/UVGK8CrMqj0FAO3/lk4FLt9DX9sz66PnCwGDQDLntcBaBv3a4CnQv+rv4bGK2gP2g6nPeAyqq9dLnq7XL1UptYL79DlfueXg+vXAm3bQFv9TeHbx5Wk9QH6pc6iUyuME+c1FraLXyRVcGm1EJ0Jxsg00tU/9NAgypXzQjmeEUDlfX2V33tyashJS4Qg0Fj46IogrzdeG5HHgD51U2YmttZ2Ke/ymZWmA+BXq48tvUErR3WXqsBx5Jt5EJp3eADJzelFjIv2q9XUAXgajTw6PVLmBHqzV0v7eN4ucpUZZXWj1qjuS1TtTi2x7wrq0X1kEzEBPGONpXN8fBXzds934gW36CyPqO54WzRHrWCLM7J7Iyz/GPg6hdVWeXuXWpwpa30t/K76k3sm4dVBgcg/S0oT1MNzX0zKSPh6qFKXef/Ra0oXH2vau7u+wZvdFGlrLN/B9/bC2vvV0HWI8vgywcc94XpOux7Vg2EjFrs+D40TQ2TbDWr6zm61qHXVeP5aGVFhpMJMRhUf9c9u+Hew3Dh/6oeoP0vqgbrcx9QK0iHypkMXOKFcNULatjnPXvUQorRCqpsltykhtrmbIVF18H396sPLUZX9XO/9nWVoXr1WjXmpKFS/TtdcLUK/k4BEliJcXO0rB6LVafU1MKxcucGe6aXmHExaCSEO/7jcNpMtcplV07/rFVVQys5lY0s69w6xsPVyLXLp/F5ZjmFNU0c6hzV0HdFoI2maaTEB1FR30qAlyvL4h0PzBxN3bOsBu6zOlJsIr3E3KvU15OfhyvP3LwMD1cjtzy3l+K6Zk5UNoxK4zqowPPrn65j7ZzQ7oNfPqBWv+16fFRew2m6rjaTLUuDi//d/WnZxt1HvdFkfaias0dD3g7VXxO7cnSu11PSxTDzrP5vqJqm5gslnKuGOGZ9BF/8WWWy5l0x+vcxVG5esPbnKsCac4Eqpz2yzP4+dIW7oSJj4GyVTXiyOi/1GTWTqa+S/VB9fGRN66MtMA6W3QbXb1KLFr67U/0bHEvJl6iet7Eqj2kaXPk83HsINj4MPqG9H49ZqmamFe1VIz2+eUgtJjhFslUggZUYR7axCQBfHq1w+jkJ4b4DlsPmRvnh6+5itxyY2tlfZRudAHDDyjg0TeOFnXkcKjTh7mJgdrjjQMNWDlyfGD7i3ilnOTt9/b/7inBzMbBxoYM5L0BMoBf/d1MKVQ2tXPXETjqs+qju6Rcb7NVdHj32qZqWrBkh453hLc0uz4DMD/p/mUsGft7WB1Vv1fI7IfEC++csvwOMbrDz4aHflz35OyBiwdCme48Gowt86xkVTL12nVrBtv63k6vXJGAaXPmsmuZtdIXnL1ZN1D2lPqMatJ0NCNferwLkT37Z/W/LalVN07ufBKO7KkFORq6eKjg8Gbh6DJwVTN6oysAZ73RPWQ+ZNX73N8Gkx0qMm/QSE74eLkQHeLL1aAV3nTlzwPN1XSejxMTaOfa3frFxMRpYPj3IbsZqT24t7i4G5kd3Z6Qi/T05f14Er+0tJDbIi3nR/rgOEDCdnhCCpsHGRY6Dl9EW6TVoXasAACAASURBVO+JpjHgLKuWdgtvHyjm3LkRvSbG27MgJoB/X7OYO1/aB4xRs3ldgdo+JXy+6hH69H6VWXD2zcTSobIb2zonM/fl5qtm9iy4sv9jW/+inrv4RlUycsQnTJUvDr6ilo/7DPxva0DtLWrm0FhnIBxx94HrXoenz1G9LwkbJuY+BhN3Gtz2udrgd9NNqi9s1T2qkTv9HdW35Wy5yjsY1v5SjdF48VJVcqrJVRkRUP1EnvbL+mKcrfqeGnmy/0W1r98pxKnAStO084CHACPwtK7r/6/P4zcDfwOKOw89ouv606N4n+IkkF5iJjnSjyVxgTz1dQ71Le0DTveuqG+lqqHNYeN6T6tmBrMlq4JSUzOR/p5dx/fm1bBoWgBuLr0Dp1tWx/PB4VLSS8zcsjp+wGsnRfqx5/6zCfXtv2HyWHFzMRDm6z5gxurzzHJMze1clWJ/xWRfG+ZG8MdL5vHOgWLi+ww4tau9RX0ydUZHq3rT1K1qdZK7L3z6K5WhcCawqiuAN29TpaFF13fO2+lRAmtvVjOC3roNTnwBF/xVvQaoLTK2PqCed/G/B8/anPZ9tUJp1+OqJ2i4ilPVG3rP+VXjzS9Kldw0w8hWwY017xC46X0VeG/+FdTlqz3rLK2qf2wolt2myrnmUgiepcpeQTPVyr1pY1CSFcOjaap5ft2vHDfqn6QGDaw0TTMCjwLnAEXAXk3T3tN1ve9GWK/ruv69MbhHcRKwWHWyysxctzyOtbNDeXzrCXZkVzkckQDONa7brOrss9p5oprLl6hAo6G1g/QSE/es65+CXhIbyPxof9KKTf0Gg9oznkGVjZpl5XgY5KbUIqIDPDltZojDc/q6cWUcN650orH3xBfwytVqSXW8E4HDp79SPS5Xv6Te4EAFHBnvwrpfDvzc9LfhvXtVUHb50/YzUgA3f6i2Yvn6b1C4S5XCcr6CL/6kGmM3PuxcKSx4JiRdpFZtpT7TPScoeJYahJiwwbmJ3Xk7AK33uIKJ0Hee1WTl6ql6cz77Dex8RAWD01ZC+NyhXcfoqrZZEZOfpp1yQRU412O1HMjWdT1H1/U24DXgkrG9LXGyyalsoKXdytwolbHy9XDhy6yB5zSlF6ueLGcarZMi/AjwcmVnjz6rAwW1WPXe/VU2mqZx15kzcTOqcQ2TUXSgl8Pm9ZK6ZrYdr+SKpTED7vc3bMc+BUub2kqktX7gc9P+q2Ydrfqeari2Sb5EbShc6WDLIV1XwwbfuFn1X9y1zXFQBaqvaN39KvPR0ao2r/38d6p/49LHB5/Q3NPGR9TqrHmXq21TCnaqHq3XroN/zVdZsMH2RcvfrnqcPMdnQcNJwWBQM6nO/5sKrEZ7TIUQk4AzpcBooOes+CLAzohhrtA07QzgGPBDXdf7zZfXNO0O4A6A2NhBZpuIk0rXfn/RfrgaDaxJCGHrsQp0XXc4Fyqj1Ex8sNegmwGD2gZm5fRgdvbos9qbW4NBgyVx9t/4LlwQydo5oXi7T85Ww+gATz45UorFqvcLnt7cV4Suw5UOBqeOWN4ONX/IVKR6pTY6aPYu3q/2Lpu2sv8O9EkXw8c/VVuk2Lbf6CnnS9jzpCrtnPf/nN/XLf50NaH645+rLMiF/xhaUAWqD2fVPb2PtTdD7teqRPjFn1RmbMFVsOK7/cuZHW1QuBeWjmBm1KlsxR2w5Eb1+xPiJONMxsreu17fpT7vA/G6ri8APgeet3chXdef1HU9Rdf1lNDQUHuniJNUeokJNxcDMzsHaK6dE0a5uZXMUsfZkPQSs1NlQJtVM4Mpqm2msEaVz/bk1ZAc5YfPAIHTZA2qQK0MbLfo/eZzWa06b+wr4rSZwUwLGoMyUHOtmvq86AY1t2j/C/b3ICs5qBqIvYPV6q++gZFfpAq4+q4Eg+7tV/ynqczRUDfL9QqCK56Cjf9WmazR4OoJs89Vm+LevUtNiT78BjyxGvY81fvckgNq77WJ7K+a6iSoEicpZwKrIqDnkJwYoNe6Z13Xq3Vdt/31fwoYxvQzcTJLLzGTGOHbtfpu7WwVWG89Zn/sgrmlnYKapn5DLwfSs8+qrcPKgYI6u2XAqSKma5ZV7z6rXbnVFNQ0OZxdNWL5OwFd9VatvV+t8nvv+70HfpalqaDK3U/tW+fnYMVk8iVqcGX1id7HM95Vm+6uu19tHzLZhCWpAaM/yuieF7X5190bDudvV/9XAishRB/OBFZ7gQRN06ZrmuYGXAO81/METdN6diBvBOxMbxMns4r6Fjos9ne513W9M/vUHSSF+XkwN8qPrQ76rDJspcMhBFYJYT6E+LixM6eatGITrR3WrhlUU5FtllVRj5WBmaVmHvgoE18PF85zsA3PiOXvUPOAolPUFO/LnoCWOvjgPpVpKk+H5zeqrSxuen/geTa2nqueWStLhxpoGZqoms4nM68guObl/9/encdHWd77/39dM9lDgEASkDVsAlFkFRdQKS51q1S7qD222s1udu/psac97fe0p7+22vWcrtZuWq2tVisibnUr4MoqW5AtIaxJCEvWmczM9fvjmoQEJmSSzJLMvJ+PBw8y99xzzwenA+9e13V/rhOdzh+5zU0ZVqyC4ulutE5EpINug5W1NgDcATyDC0x/s9ZuNsZ82xhzXfi0zxljNhtjNgCfA26LV8HS//gDIS790cv87wuRu1nvO9rMseZWyk6a1ls0tZg1e45wrLn1lNe0r8nqwVSgMYbzJw7nlZ21vBluDNpfF6ZHo2P39bpGP19/bCPX/O8K9h5p5ns3zCAns4friqJVsRLGnHui1cLIs90t01ufcAu8/3SdG2W69QnXP+l0ho51Aa1jsNrwoOuQvfi/er42Khk8XrjqLrjiu2692H1LXFuIaO6WFJG0E1WbXmvtcmvtmdbaSdba74aPfdNauzT889estWdZa2daa99hrS2PZ9HSv1QdaaK+JcCja/dG3ANwcxejT++YWkIwZFm5vfOectZaXt1ZS0lBdo/bHFwwaTiHjvt4ZM1eJhblJ6VNQqzkZ2cwNC+Tpev3s+juF3nozSo+dEEpL31lEdeeE6dmpS3H4OBbp4aGCz8L4y5wTTg9GW76b/jpG7y2K1vipv2OVLjRnpe+78LWtGtiXn7cGAMX3uF6dB3YAP4GTQOKSET9aP8DGagqahsBN2W1vuroKc9v3n8cj3EtETqaNXYog3MyOm1v4wsE+cJf1/PPrdW8L8rGlx219XTaUd3AvATt6xdPYwvzKD9Yz4wxQ1j+uYv4f9ed1W2X9T7Z87rrJ3VyaPB44frfwIz3u5GqnmxPURYe2N6y1G3OfHyfu4OwPze07ErZEvfnn3WLa0wpInKS/ntLlAwYu8PBKsNjeGLDAWaP6xxotuw/xsTiQeRmdZ72yfB6uPjMYl5+u4ZQyHK8pZXb71/DG7vr+OqVU/lUN1veRFI6PI+Rg3M4eLxlQC9cb/M/7z6bo82tXDylqMu2FDFVuRI8mW4q8GSF492deD1VWApnzIIND0H9fph0KUy4qM+lJs3Y+e6XiEgEGrGSPqs83ERBTgaLp5Ww7K39BEOdpwNPXrje0aKpJdTU+3hm80He86tXWL/nKD+7aRafXjS5V0HCGNN+d+D8CQkOVq0trtll1Rsxu+TMsUO55MzixIQqcIuyR8+NfTfvsiVQvdm1crj0m7G9tohIP6JgJX1WcbiRCUX5XDdrFNX1Pt7YXdf+XF2jnwPHWroMVpeE2y586oG11Db4uf+j81kya3Sf6vnIggl8etEkxvWmx1Mo6NbQ9Ma6+932LK//pnevTzZfg+vPFI9F2WXhzRrOuh5GzYr99UVE+gkFK+mz3bWNjB+ez+JpJeRleXnirRNtzrrb76+4IJvzJw5j7LBc/v6pCzlvYt9vX58xZghfvXJaz0d5QkF47BPwm4thxz979tqAD1b+xP28/VnXmXugqXodbDA+i7KHT4Kb/+q6pIuIpDAFK+kTXyDI/qPNTBieR15WBpdNH8FTGw/QGu5p1emOwIAfHr8D1v250zV+f9u5vPDlRUwuGZTw+tuFgvCPT8PGh8F43chTT6x/0C3Knn87+I5Dxb/iU2c8Va5yf/axkXasioGpV6blhqwikl4UrKRPquqaCVkoLcoH4LqZozjS1MrKHa6Fwub9xxk9NJehuZmw7ItuumzlTztdIy8ro70je0w01blgtHeNW9PTnVDI7Xf31kOw+Bsw471Q/iQET+2vFVGwFVb82LUQuPzbkJnvXj/QVKyCUbMhO4kBV0RkgFOwkj5pa7XQFqwuOrOIwTkZPLHBTQdu3n/MbUuz4kew/s9QcpZrDlm3O35FvfAdt4j83sXwg1L4wQS49zI3WrbpUWju0BIiFIJln3e1XXInXPzvbj1Q8xGoWBHd+214CI7tgUvCmwJPvhTKl5/Y/mQg8DfBvjVqeiki0kdqtyB9UnG4EUOIGS9+FIaXkv2Or3Pl2SNZvvEgRxr97K5t5N9HbXRh55wb4eKvws/nujVM8z8e+4ICPheepl4Ns29xe9TV7XS/b33CjZi1TXedeYU7vu5+uOgrsOhOd41JiyFrkOsWPmnx6d8vGIAVP3TtBNr6Gk1/F2xdCvvXwph5sf8zxsPeNyHUCuMXJrsSEZEBTcFK+mR3bSPTc+rI3P087AY2PcInzv48j/om86uXdzKXct65/Xsw7kK47v/cVijDJroF3qcLVjXb3Ka/PR1B2f6s29du3kdhymWdnwsFYe9qd872Z+Cf/88dX/AFNwXYttg9MxfOfCdsXQZX/wi8p/mabHzYdRS/6S8nXj/lctedvHzZwAlWlavAeGDc+cmuRERkQNNUoPRJ5eEmLio46B4s+SWMmsOk1d/mmZz/5Oir93FP1o8JDR7rNrLNCG8vM/ly2L3CbW8SibXw1w/CH6+GB94PtZH3IIxow0OQXwITF536nMcL486DS/8LPrkSvrQVPvZC5C7gZUugqRb2vNL1e4WC8K+7YcQMmHrVieO5hVC6cGCts6pYBSPPgZzoN70WEZFTKVhJn+yubWRW1j7AuB5FH3wMbnqQwqwQd3l/iTEG7wcf6Xw32JQrINDs/jGPZO9qqN0GU6+Bylfgl+fDs9+AluOnL6apDt5+xi0+P90oU5vBo2DM3Mhbq0y+HDLzOm8efLJNj7ppxku+euo1pl0LtW9Dzdvd15FIAT8c3Oj2BGzT2uKmAks1DSgi0lcKVgJAIBjioTf2UN8S5Z1wQEtrkP3HmpliK12foqw8FzCmXcOuG1/g660f4e6SuzAnb9ZbugAycmDHc5EvvO5+F2pu+A18bi3MvBFe+Tn835zTt0HY/JhbJ3TOjVH/GbqUleem9LY+4UamTtY2WlVS5kLUydpGsMqX9b2WWFr2Bfj1Qvj+OLhrEvzuCrfQP+jTpsIiIjGgYCUArKk8wp2PbuS2P7xJgy8Q1Wuq6pqwFka27IQRZ3d6bs6EkWwa9V4mn3PBqS/MzIUJF7u1TifzN7qRoLOuh+wCGFQCS34BH38BhoyFv38MqrdGLuitv0LxNDhjZlT1d6tsCTQcco0zT/bS992o2qKvgSfC12jIGNe6oD9NB259AtY/ALM/6NpCTLva7Qt4YD0MGgHjL0x2hSIiA54WrwsA1fU+wAWsD//hDf744fnkZ5/+fx4Vh5vIp5lBTVUw4tZOz3k8hsc/c5oRkMmXu2B1eKcb7WqzZSn4690dfR2NngP/9gj8fB488QX48FOdA03dbheALv1W5Km93phyhRtZ2/J459Cx/Tn4112uxrLrun79tGvd3ZDHD8DgM3r23ta6qc26Xe6/T18bazbUuP9uI89x3c8zsk59v0TtRygiksI0YiUA1Da4YPXtJWexpvIIH/njmzT5Tz9yVVHbyFRT5R6MOKtnb9jWmmD7SdOB6/7s7hocF2GkK384XPE/UPUarP1T5+fe+htg4Jz396yO08kugMmXubDX1pPqaBU8+nE3Qnf1D0//+rYpwm3Lo3u/LUvh7x+H34b7b909EX53GfzqQji2r9d/DKyFJz4Hvnq44Z5TQxUoVImIxIiClQBQU+/D6zHcct54fnLjLN6sqONjf1pNsz/C+qKw3YcbmZMT/gd/5NldnhfRsAkwfHLndVaHd0LlSjcS1NU/9LM+AKUXwT+/BfWH3DFrXdf00oVuCi6WypZA/X7Yt9ot/H74Vre+6v33uSnN0ymeCsMmRTcdWPWmu/bul10PrbPfA+/8/+D637jNkR+80QWj3lj/gAt3l34TSqb37hoiIhIVBSsB3IjV8PwsPB7Dklmj+eH7ZvLqrsPcfv9qWlojh6uK2kbmZu+D7CFu/VNPTbnCtV3wN7nH6x90vZRm3tz1a4yBa3/iWjU88zV3bO9qN2UWi0XrJzvzneDNctOBz37ddSdf8ovO05enq3XaNbD7X53vwjuZvxEeux0Gj4E7VsOtS+HaH8MFn4GZN8H7/wjVW+DhD7uGpD1xpBKeutM1/jz/0z17rYiI9JiClQBQ2+CnuCC7/fENc8bwg/ecw4rttfxtdVXE11QebmKq2eOmAXszlTT5Mnc3WsVKNwq0/kF3bPCo07+uaApc9GXY9HfY/k83WpWR40aXYi1niOu+vvoP8MY9cP5nTr+u6mTTrnV3Km5Z2vU5z33TrRF79y8j95GafBlc8yM3uvfUV90IXTRCIfjHp9zP7/5l5EX2IiISU/qbVgA3YlU0KLvTsffPG8uUkkEs33jglPNbWoMcONbIGP+unq+vajN+gWursP1Z2PmCm3I7edF6VxZ+EYZPgSe/dGILm3g1tyxbAq2Nbhucy/+7Z68dc67bH/HJL7kgeLId/4Q373WjUxMu6vo68z4MF34OVv8OXv1FdO/96v+5jupXfR8Kx/esbhER6RUFKwGgtv7UYAVw1YwzeGN3HTXhuwbb7KlrYjQ1ZAWbeh+sMnNgwiVuJGbtfZA3HM68qvvXgevi/q6fwtFKaK5zU2bxUrbEhZr3/Qm8mT17rccDty2D0fPgkY/Ayp+cGHFqqnMbQxdPg8X/1f21LvtvmH6da5Z6uhEwgMpX4Z/h82f9W89qFhGRXlOwEqy11Db4KSo49W6xq2eMJGTh2S0HOx3fXdvIdLPHPRg5o/dvPuUyt9de+TK3RirSHWtdKV0Ic2+DIeO63yy5L7Ly4Yrv9LxlQpu8Ya4j/dnvcfsTLvuiWyu1/N+hscYtUM/M6f46Ho+7q2/MPPj7R91oVyQN1a7pZ+F4WPJz3fEnIpJAClbC8eYA/mCI4ggjVlNHFDCxKJ+nNnYOVpWHXbCymL7daTY53HbBhqKfBuzomp/AZ1f3fCQp0TJz4IZ73RTmmj/APZfApkfgkjth1KweXCcXPvA3d8fhXz4AO1/s/Hwo6EJXy1F352LOkNj+OURE5LQUrISacA+rjovX2xhjuGrGSF7ddZi6Rn/78d21TZyTuRczbKIb0emtwvFuDdKoOb2bUvR4Tmzu3N95PG7D52t/6rrHj57rglZP5Q2DDy11i/j/chPsevnEcy99z92FeM2P+jaSKCIivaJgJe3NQU9ZY+Wrh6WfZck4H8GQ5bkO04EVtY2Ueff0fn1VRx/4K9z8l75fZ6CY92H41Ctwy6PRbRYdSd4w+NDjUDjBhauKleGO8He7kb/ejP6JiEifaUsb6TpYrfgRrL2PKaEg44a9j+UbD3LjueMAOFRbyxnBA7EZFRnaix5YA13JtL5fI7/I9bz647XwwPvddGg0HeFFRCRuNGIl7Xf8FQ3qsHC8bre7rT8jF7PxEW6Yls2qHbUca2qlpTXIkPod7rxYjFhJ7w0qgVufcL2/bCi6jvAiIhI3ClZCbYPbzqYwr0Oweu6/wJPppuiCPm40LxAIWZ7beojKw01M94TvCFSwSr6CEXD7i/CZ16PrCC8iInGjYCXU1vvbt7MB3OLnrU/ARV+ESe+Aie9g5NsPMG5IJk9tPMDu2kammT0EMwfBUDWe7BeyC7rvWC8iInGnYCWdu66HgvD011xvqAvucMfO+ySmfj+fH13Oiu21bNp3jOmeSmxJL7eyERERSVEKVkJNg4+itlYLa/8EhzbBFd8+sVZnyhVQOIF3NvwDfzDEg69XMt1TRcYo3c4vIiLSkYKVhLezyYLmo/DC/8C4C6Hs3SdO8HjgvE8wqHoNlwyqIq95H4No1voqERGRkyhYpbm27WyKC7JdD6SmOrdp78lTfLM+AFmD+OLgl05sZTNCI1YiIiIdKVilueMtbjubCd7D8PqvXWPJM2aeemLOEJj1Ac45+jwLPRvdsb5sZSMiIpKCFKzSXFtz0BlH/gmhAFzy1a5Pnn87npCfD2a8QGBIKWQPSkyRIiIiA4SCVZpraw467tBzbu+6oeO6PrloCky+DA9BLVwXERGJQMFqoHrrYfj9VRDwd3/uadQ2+Bhjqimo2wRlS7p/wXmfdL+POLtP7ysiIpKKFKwGqtW/gz2vwMaH+3SZ2nofV3necA+mX9f9CyZdClfdBXNu7dP7ioiIpCIFq4GooQb2vOZ+fuV/IRTq9aVqG/xc7X0De8ZMGDah+xeEWy8w+Ixev6eIiEiqUrAaiLYtByxc+FmoKYftz/b6Uq11e5jt2YGJZhpQRERETkvBaiAqf9ItMr/0WzB4jBu16qXS6ufdD9MVrERERPpKwWqg8dXDrpdg2rXgzYQLPg2Vq2Dv6l5dbmb9y+zJnAhFk2Nbp4iISBpSsBpodjwPQZ8LVgBzPuSad676Wc+vdfwAZYEtbBr6jtjWKCIikqYUrAaa8ichbziMPc89zi6AeR+FrU/A4Z09upTd+gQAVSMvj3WVIiIiaUnBaiAJ+OHtZ+DMq8CbceL4eZ9004Kv/rxHlwtu/gfbQmPwFE+NcaEiIiLpScFqIKlcCb5jMO2azscLRsDMm2HdA9BQHd21GqrxVr3KU6H5FBVkxb5WERGRNKRgNZCUPwmZeTApwpqoCz8LQT+8cU+U11qGsSGWB8+jaFB2bOsUERFJUwpWA0UoBOXLYdJiyMw99fmiKW4k643fwvH93V9vy+M0DJrA23YMxQUKViIiIrGgYDVQHFgH9fth+ru6PmfxNyAUgAdvBF9D1+c11sLuFewqvgwwGrESERGJEQWrgaL8STBemHJF1+eUTIf3/gEObYJHPgKh4KnnNFTDA+8DLGsHL8ZjoDBPa6xERERiQcFqoNi6DEoXQN6w05935hVw9d2w/Rl4+k6w9sRzNdvg3kvdNjg3PkB5aAzD8rPxekx8axcREUkTClbJtHcNVL3Z/Xm126F224mmoN0592NwwR1uIfvrv3bHKlbC7y6H1ha47UmYdjW1DT6KBmm0SkREJFYyuj9F4uLYPrj/esjKhy9uAo+363PLl7nfp14d/fUv/w4cqYCnvwZHKmH176BwAvzbw1A4HoCaBr8WrouIiMSQRqySIRSCxz/telLV74eKFV2fay1s+CuMngdDx0b/Hh4P3PBbGDUbXv8VjJkPH32mPVQB1Nb7KNbCdRERkZhRsEqGN+91Gylf+X3IHuyCU1f2r4WarTD7lp6/T1aeG6F618/gg49CbmH7U9ZaNxWoESsREZGYUbBKtNrt8Nw3YfLlbiuasutg61LwN0U+f92fISMXzr6hd++XXwRzb4OMzgGq3hfAFwhpjZWIiEgMKVglUjAAj30CMnNgyc85VO+jduL14G+AbctPPd/fBBsfgbIlkDMkpqXU1vsAtMZKREQkhhSsEmnlj2HfGrj2J1Awko/ft5qPvZwNQ8bChodOPb98GfiO924asBu1DX4ANQcVERGJIQWrRNm/Dl7+Acx4H5x1PW8fquetvcd4a99x/GXvgZ0vnLqB8rr7obAUxi/o01u3tJ7aKLS2wY1YKViJiIjEjtotJMpTd0J+sWveCTy6dh8AIQubhl/JHPtTN+13wafd+UcqYPe/4B3foLrRz4q3a7EnXXJMYS7nTxx+2rddumE///7wBp747ELOHFHQflzBSkREJPYUrBKh5TjsfQMu+jLkFhIKWR5fv49zSwtZXXmEFUeLmHPGTHjroRPBav2DgIFZN/O95eU8tm7fKZf1GHjxK4sYPzw/4ttaa/nNyzvxBULc/cw2fvuhee3P1dT78BgYlq/F6yIiIrGiqcBEqHodbAhKFwLw2u7DHDjWwgcvKGXqiAJWV9bBOTfBgQ1QXe72+Fv3AExajB08mhXba7jyrJGs+Oo72n8t++xCvB7D71bu7vJtV1ceYfP+40wbWcBzWw6xpvJI+3O1DT5tZyMiIhJjClaJULESPJmuSSfw2Np9DMrO4IqyEcwrLWTdnqMEz3qP22T5rb/C7pfh+F6YfQvbDtVT2+Bn8fQSxg7La/919ughXD97NH9bXUVdoz/i2/5xVQVDcjP588fOo2hQFnc9XY4N7x1YU+9XqwUREZEYU7BKhMpVMHoOZOXR7A/y1KaDXHX2SHIyvcwdX0iDL8C2hlyYtBg2Pgxr73PNPKddw6odhwFYMLnolMvefvFEWlpD3PdqxSnP7T/azNObD3LT/LEUDcrms4un8PruOv61vRZwI1ZqtSAiIhJbClbx5m90dwSG7+x7bushGnwBrp8zGoB544cBsGbPETjnRjhWBZsfgxnvh4xsVu2oZWJRPqOH5p5y6cklBVw2vYQ/vVJBs7/znX/3v1aJtZYPnu+2sLl5/jjGFOZy9zPlhELhrutauC4iIhJTUQUrY8yVxphtxpgdxpg7T3Pee40x1hgzr6tz0k7V6xAKQKkLVo+t3csZQ3I4f4K7m29MYS4lBdmsqaiDaddA1iD3utm30BoM8dquwxFHq9rcfvEkjjS18siaqvZjLa1B/vLGHq4oG8mYwjwAsjI8fOnyM9m07zhPbjxATb1PU4EiIiIx1m2wMsZ4gV8AVwFlwM3GmLII5xUAnwNej3WRA1rFKrd2aux51NT7+Nf2lI4lpwAAHGlJREFUWpbMGo0nvGjcGMO88N2BZOW57WcmLoIzzmF91VGa/MHTBqtzSwuZPW4ov12xm2DIrZ96fP0+jja1ctuC0k7nLpk1mqkjCvj+U+X4AiFNBYqIiMRYNCNW84Ed1tpd1lo/8BCwJMJ53wHuAlpiWN/AV7ESRs2C7AKe2LCfYMhyQ3gasM2ccYXsPdLMoeMt8M7vwoceB2Dl9lo8Bi44Ta8qYwyfuHgie+qaeHrTQay1/GFVBdNGFnDehGGdzvV6DF9551T2HW0G1MNKREQk1qIJVqOBqg6P94aPtTPGzAbGWmuXne5CxpjbjTGrjTGra2pqelzsgONvclvYhNdXPbZuH2eNGtypUSfAvFIXgFZXHOl0fNWOWmaMGcqQvMzTvs3lZSOZUJTPr1/eyau7DlN+sJ6PLJiAMae2Urhseglzxg0FFKxERERiLZpgFanRUXsTcGOMB/gJ8OXuLmStvcdaO89aO6+4uDj6KgeqvW9CqBVKF7Kjup6N+45x/ezRp5x21qjB5GR6OvWZavAFWF91lIWTT99ZHdxI1McvmsjGfcf4z0c3UpiXyXWzRkU81xjDN64tY0JRPtNGFkQ8R0RERHonmmC1Fxjb4fEYYH+HxwXA2cBLxpgK4HxgqRaw49osGA+MO5/H1u3DY4gYeDK9HmaOGcqayrr2Y2/sPkwgZFkwqev1VR3dMGc0RYOyqDjcxM3zx5GT6e3y3DnjCnnxK4soGZzT8z+TiIiIdCmaYPUmMMUYM8EYkwXcBCxte9Jae8xaW2StLbXWlgKvAddZa1fHpeKBpGIVjJwBOUN4etNBFkwuoqQgcpiZV1rI5v3H29smrNx+mOwMD3PGF0b1VjmZXj520URyMj3cEm6xICIiIonVbbCy1gaAO4BngK3A36y1m40x3zbGXBfvAges1hY3FTh+IUeb/OysaTzthslzxxcSCFnWVx0F3Pqq+ROGnXbk6WSfuHgir9x5KaMi9LwSERGR+ItqE2Zr7XJg+UnHvtnFuYv6XlYK2LcGgj4oXcC6PS4szQ4vGo9kzjg3MrWmso5JJflsO1Tf3kQ0WsYYbaosIiKSRFEFK+mFylWAgXEXsG5lDR4DM8d0HayG5mUxpWQQayqPtDf1XHia/lUiIiLS/yhYxUvFShhxFuQNY+2e7UwbOZj87NP/555XWsiTbx2gMD+LoXmZlJ0xOEHFioiISCxor8B4CPih6g0Yv4BgeN3UnPFdj1a1mTt+GMdbAjz51gEWTCpq784uIiIiA4OCVTzsXweBZihdwPbqehp8gfY1VKczN3wHoC8Q4sIo+leJiIhI/6KpwL76wzXgb4ApV7hfo+dA5Ur33PgFrN3kFq5HE6xKh+cxPD+Lw41+ra8SEREZgBSs+qKh2oWoglGw4ofwr7sgbzh4MqB4GuQXsXbPBoblZzF+eF63lzPGcMGk4WzZf5xxw7o/X0RERPoXBau+OLTZ/X79r10j0J0vwPZnYeeLcNYNAKzdc4TZY4dG3Lcvku9ePwNfazDq80VERKT/ULDqi7ZgFb77jxnvdb/Cjjb52VXTyHvmjIn6kkNyMyH39Jsui4iISP+kxet9Ub0F8ksgP/J6qGgag4qIiEjqULDqi0ObYURZl0+v23Ok28agIiIikjoUrHorFISacig5q8tT1u45GlVjUBEREUkNCla9VbcLAi1ufVUEPWkMKiIiIqlBwaq32heuR54K7EljUBEREUkNCla9Vb0FjMf1q4pgbWX0jUFFREQkNShY9dahzTBsImTmRnx67Z4jUTcGFRERkdSgYNVb1Vu6XF8FPW8MKiIiIgOfglVv+BuhbneXdwS2NQadM17TgCIiIulEwao3qssB2+XCdTUGFRERSU8KVr1RHb4jsKSrYKXGoCIiIulIwao3Dm2BzDwonBDxaTUGFRERSU8KVlGy1vL1xzaypvIIHNoEJdPBc+p/vpbWIGsqj3BuqdZXiYiIpBsNqUTpaFMrD7y+h8P1PuZWb4GpV0c879Wdh2luDfKOaSUJrlBERESSTcEqStX1PgA2b98B3sNdtlp4vvwQeVlezp84PJHliYiISD+gqcAo1YSD1fhghTsQYeG6tZYXtlazcHIROZneBFYnIiIi/YGCVZSq61sAmO7Z4w5EGLHacuA4+4+1cNn0EYksTURERPoJBasotY1YLRpaQw1DCeQMO+Wc57dWYwxaXyUiIpKmFKyiVF3vIy/Ly9kZe9kaHOvuDjzJ8+XVzBwzlOKC7CRUKCIiIsmmYBWlmnofIwdlMLhhFzsYx7NbDnV6vrq+hQ1VR7lUo1UiIiJpS8EqStX1LczIq8MEWgiVTOfZLQex1rY//2J5NQCXan2ViIhI2lKwilJNvY8ZGXsBGDvtXKrqmik/WN/+/PNbqxk1JIfpZxQkq0QRERFJMgWrKFXX+5jCHjAe5sw9H2Pgmc0HAddtfcX2WhZPL8EYk+RKRUREJFkUrKLQ0hqkviXA2NbdMGwSxcOGMndcIc9uduusXt3luq1rGlBERCS9KVhFoa3VQnHzThjhGoNecdYIthw4TlVdEy9srSYvy8sF6rYuIiKS1hSsolBd72Oa2cOgpr0w8hwArigbCcCzWw7x/NZD6rYuIiIiClbRqDneyPcy7yWYMwzmfQSA0qJ8po4o4N4Vu9h/rIVLp6vNgoiISLpTsIpC4ZYHmO3ZQdPi70DeiY7rV5w1ggPH3FY36rYuIiIiClbdOX6AWW//jJWhs8mfe3Onp9qmA2eOHUpJQU4yqhMREZF+RMGqO0//B55QKz/O+iReb+f/XGePHszFZxZzy3njklSciIiI9CcZyS6gX9v2NGx5nKVDP4LPU3rK08YY7vvI/MTXJSIiIv2SRqy64muA5V+B4mnc73kXJdpYWURERLqhYNWVl74Hx6rg2p9yoCFEsYKViIiIdEPBKpKGanjtVzDnVoJjz6e2wa/F6SIiItItBatIKlaADcLcWznS5CcYshqxEhERkW4pWEVSsQqyCmDkTKqPu+1stMZKREREuqNgFUnlKhh3HngzqGkI7xOoYCUiIiLdULA6WWMt1JTD+AUAVB93ndW1xkpERES6o2B1sspV7vfShQAasRIREZGoKVidrGIVZObBqNkAVB/3UZCdQW6WN8mFiYiISH+nYHWyylUwdj54MwE3YqXRKhEREYmGglVHTXVwaDOMX9h+qOa4gpWIiIhER8Gqoz2vAhZKF7Qf0oiViIiIREvBqqOKVZCRA6Pnth+qPt6iOwJFREQkKgpWHVWuhDHnQoYboWr0BWj0BzViJSIiIlFRsGrTcgwObmzvXwVQU6+u6yIiIhI9Bas2e14DGzplfRWoh5WIiIhER8GqTcVK8Ga5qcCw9n0CBytYiYiISPcUrNpUrnKL1jNz2w/V1LvtbIoHKViJiIhI9xSsAHz1sH99p/VVANX1PjI8hsK8rCQVJiIiIgOJghVA1etgg53WV4FbvF40KBuPxySpMBERERlIFKzA9a/yZMDY8zodrq73aX2ViIiIRE3BCtz6qlGzISu/0+Gaep/WV4mIiEjUFKz8TbBv7Snrq0AjViIiItIzClYVKyDUChMu7nQ4GLLUNWrESkRERKKnYLX1CcgeDKUXdTp8uMFHyELxYO0TKCIiItGJKlgZY640xmwzxuwwxtwZ4flPGmM2GmPWG2NWGmPKYl9qHISC2G1PsW3w+dQ0205PVYe3s9GIlYiIiESr22BljPECvwCuAsqAmyMEpwettTOstbOAu4Afx7zSeKh6A9NUy//tm8p3lm3p9FT7PoFaYyUiIiJRimbEaj6ww1q7y1rrBx4ClnQ8wVp7vMPDfKDz8E9/Vb6MgMnkpdBMlm7Yz5rKuvanajRiJSIiIj0UTbAaDVR1eLw3fKwTY8xnjDE7cSNWn4t0IWPM7caY1caY1TU1Nb2pN3asxZY/yZtmBjMnj2XE4Gz++4kthEIuE1a3bWejDZhFREQkStEEq0htx08ZkbLW/sJaOwn4D+AbkS5krb3HWjvPWjuvuLi4Z5XGWvVWzJHdLPXN5uoZZ/AfV07jrb3HeHTdPsCNWA3OySAn05vcOkVERGTAiCZY7QXGdng8Bth/mvMfAt7dl6ISonwZFsM/g3NZNLWEd88azcyxQ7nr6XIafYFwDyvdESgiIiLRiyZYvQlMMcZMMMZkATcBSzueYIyZ0uHhNcD22JUYJ+XL2J41jcIRYxg9NBePx/Ctd5VRXe/jly/toFpd10VERKSHMro7wVobMMbcATwDeIHfW2s3G2O+Day21i4F7jDGXAa0AkeAW+NZdJ8drYIDG/hH8GYWzSppPzxnXCHXzx7Nb1fsJi/LyyVnJnm6UkRERAaUboMVgLV2ObD8pGPf7PDz52NcV3xtc3+UpwLz+O7UzuHpP66cxtObDnK0qVUjViIiItIj6dl5vXwZh7JLqc4cw7zxwzo9NXJIDp9aNAlQDysRERHpmahGrFJKUx22YhVPe97NwilFZGWcmi1vv3giB441s3haSYQLiIiIiESWfsHq7WcwNsjfm2Zx89TIwSkn08v3bjgnwYWJiIjIQJd+U4Hly2jILmGjncCiqVqcLiIiIrGTXsHK3wQ7nmeVdz5TRw7hjCG5ya5IREREUkh6BasDGyDQzN+PTWNRF9OAIiIiIr2VXsHK3wBATahA04AiIiISc+kVrFqbADBZ+cwdX5jkYkRERCTVpFWwsv5GAM4qHUGmN63+6CIiIpIAaZUuquuOAjBv8ugkVyIiIiKpKK2CVUP9cQDGjhie5EpEREQkFaVVsAr63RqrrNxBSa5EREREUlFaBSvrb8RvveTl5CS7FBEREUlBaRasmmghm7ys9NvJR0REROIvrYIVrc00k0VuljfZlYiIiEgKSrtg1WSzyVOwEhERkThIq2DlCTTRYrLVw0pERETiIq0ShjfQjN9kJ7sMERERSVFpFaw8wRb8RncEioiISHykVbDKCLbQ6lGwEhERkfhIq2CVGWym1atgJSIiIvGRXsEq1EJQwUpERETiJL2ClfUR9OYmuwwRERFJUWkVrLKtj1BGXrLLEBERkRSVPsEqFCQbPzZDI1YiIiISH+kTrFqbAbCZClYiIiISH2kXrFCwEhERkThJm2AV8jcCYLLyk1yJiIiIpKq0CVa+5gYAPFlavC4iIiLxkT7BqskFK2+2gpWIiIjER9oEK3/biFX2oCRXIiIiIqkqfYJVi1tjlZmjESsRERGJj7QJVq3hEavMHC1eFxERkfhIm2AV8LWNWGkqUEREROIjfYJVSxMA2bkKViIiIhIfaROsgn4XrHLyFKxEREQkPtImWFm/W2OVnas1ViIiIhIfaRSsmvFbL3m52tJGRERE4iN9glVrE81kk5flTXYpIiIikqLSJliZcLDKzkibP7KIiIgkWNqkDE+gGR/ZGGOSXYqIiIikqLQJVibQgs9kJ7sMERERSWFpE6y8gWb8npxklyEiIiIpLG2CVUawmVYFKxEREYmj9AlWoRYFKxEREYmrtAlWmaEWgl4FKxEREYmftAlWWSEfAa+ag4qIiEj8pE2wyrYthDIUrERERCR+0idY4cMqWImIiEgcpUewCgXJphWbqWAlIiIi8ZMWwcq2NrkfMvOSW4iIiIiktLQIVv7mBgBMloKViIiIxE9aBCtfkwtWHgUrERERiaO0CFYt4RErT3Z+kisRERGRVJYWwcrX1AhAhoKViIiIxFFaBKvW8IiVN1tTgSIiIhI/aRGs/C0uWGXmDEpyJSIiIpLK0iJYBXxuKjAzV8FKRERE4ictglXQ5/pYZedqjZWIiIjET5oEKzdila0RKxEREYmjtAhWIb8LVjl5ClYiIiISP2kRrKy/GYDc/IIkVyIiIiKpLE2CVRM+m0FudnaySxEREZEUlhbBygSaaCEbr8ckuxQRERFJYekRrFqb8ZmsZJchIiIiKS6qYGWMudIYs80Ys8MYc2eE579kjNlijHnLGPO8MWZ87EvtPU+ghRaTk+wyREREJMV1G6yMMV7gF8BVQBlwszGm7KTT1gHzrLXnAI8Ad8W60L7wBpvxK1iJiIhInEUzYjUf2GGt3WWt9QMPAUs6nmCtfdFa2xR++BowJrZl9o032EyrRwvXRUREJL6iCVajgaoOj/eGj3Xlo8BTkZ4wxtxujFltjFldU1MTfZV9lBFsIeDRiJWIiIjEVzTBKtKtdDbiicbcAswD7o70vLX2HmvtPGvtvOLi4uir7KPMUAsBb27C3k9ERETSU0YU5+wFxnZ4PAbYf/JJxpjLgK8Dl1hrfbEpLzayQi0EFaxEREQkzqIZsXoTmGKMmWCMyQJuApZ2PMEYMxv4DXCdtbY69mX2TbZtIZihqUARERGJr26DlbU2ANwBPANsBf5mrd1sjPm2Mea68Gl3A4OAh40x640xS7u4XFJk48NmaMRKRERE4iuaqUCstcuB5Scd+2aHny+LcV0xlWP92My8ZJchIiIiKS7lO68HAwGyTStkasRKRERE4ivlg1VT43EATJZGrERERCS+Uj5YtTQ1AGCy8pNciYiIiKS6lA9WvuZGADwasRIREZE4S/1gFR6xysjWiJWIiIjEV8oHK39LPQDebI1YiYiISHylfLBqbXFTgZm5BUmuRERERFJdGgSrJgCycjQVKCIiIvGV8sEq6HMjVlm5ClYiIiISX6kfrMJTgdm5g5JciYiIiKS6lA9WIb8LVjl5WmMlIiIi8ZXywcr6mwHIydOIlYiIiMRX6gerVi1eFxERkcRI+WBlWpvwkwHejGSXIiIiIikuDYJVM83kJLsMERERSQOpH6yCzfhNdrLLEBERkTSQ8sHKG1CwEhERkcRI/WAVbMbv0VSgiIiIxF/KB6uMYAutClYiIiKSACkfrDJDPgJeBSsRERGJvzQIVi0EvbnJLkNERETSQMoHq2zbQihDwUpERETiLw2ClU/BSkRERBIipYOVtZYcfFgFKxEREUmAlA5WLa0hcvFDpoKViIiIxF9KB6umFh/ZphWytAGziIiIxF9KB6vmpgYAPFl5Sa5ERERE0kFKBytfs4KViIiIJE5aBCtvtoKViIiIxF9KByt/Uz0AGTmDklyJiIiIpIOUDlatLY0AZORo8bqIiIjEX4oHqyYAshSsREREJAFSOlgFfG7EKktTgSIiIpIAKR2sgj63eD07T8FKRERE4i+lg1XI76YCc/IKklyJiIiIpIOUDlY2HKyyc7XGSkREROIvxYNVMwBGDUJFREQkAVI6WJlWN2JFpoKViIiIxF9qB6tAMz4yweNNdikiIiKSBlI+WPlNdrLLEBERkTSR0sHKE2jGp2AlIiIiCZLSwSoj0Izfk5vsMkRERCRNpHSw8oZaCHg0YiUiIiKJkdLBKjPUQkAjViIiIpIgqR+svApWIiIikhgpHayybQuhjJxklyEiIiJpIsWDlY9QhkasREREJDFSNlj5AyFy8GMVrERERCRBUjZYNfuD5OLDajsbERERSZCUDVZNrQFy8WkDZhEREUmY1A1WLT6yTQCPgpWIiIgkSMoGK19TI4BGrERERCRhUjdYNTcA4M3OT3IlIiIiki5SOFjVA5CRoxErERERSYyUDVatzW4qMCN7UJIrERERkXSRssHqvLGuf9XIosIkVyIiIiLpImWDVVaoBYDMHI1YiYiISGKkbLCitdn9nqnO6yIiIpIYqRusMvNg9FzIGZrsSkRERCRNZCS7gLiZcBF8/IVkVyEiIiJpJHVHrEREREQSTMFKREREJEYUrERERERiRMFKREREJEaiClbGmCuNMduMMTuMMXdGeP5iY8xaY0zAGPPe2JcpIiIi0v91G6yMMV7gF8BVQBlwszGm7KTT9gC3AQ/GukARERGRgSKadgvzgR3W2l0AxpiHgCXAlrYTrLUV4edCcahRREREZECIZipwNFDV4fHe8DERERER6SCaYGUiHLO9eTNjzO3GmNXGmNU1NTW9uYSIiIhIvxVNsNoLjO3weAywvzdvZq29x1o7z1o7r7i4uDeXEBEREem3oglWbwJTjDETjDFZwE3A0viWJSIiIjLwdBusrLUB4A7gGWAr8Ddr7WZjzLeNMdcBGGPONcbsBd4H/MYYszmeRYuIiIj0R1FtwmytXQ4sP+nYNzv8/CZuilBEREQkbanzuoiIiEiMKFiJiIiIxIiClYiIiEiMKFiJiIiIxIiClYiIiEiMGGt71US9729sTA1QGee3KQJq4/we0nP6XPoffSb9kz6X/kefSf+UiM9lvLW22+7mSQtWiWCMWW2tnZfsOqQzfS79jz6T/kmfS/+jz6R/6k+fi6YCRURERGJEwUpEREQkRlI9WN2T7AIkIn0u/Y8+k/5Jn0v/o8+kf+o3n0tKr7ESERERSaRUH7ESERERSRgFKxEREZEYSdlgZYy50hizzRizwxhzZ7LrSUfGmLHGmBeNMVuNMZuNMZ8PHx9mjHnOGLM9/HthsmtNR8YYrzFmnTFmWfjxBGPM6+HP5a/GmKxk15hOjDFDjTGPGGPKw9+ZC/RdST5jzBfDf39tMsb8xRiTo+9KYhljfm+MqTbGbOpwLOJ3wzj/G/63/y1jzJxE15uSwcoY4wV+AVwFlAE3G2PKkltVWgoAX7bWTgfOBz4T/hzuBJ631k4Bng8/lsT7PLC1w+MfAD8Jfy5HgI8mpar09TPgaWvtNGAm7rPRdyWJjDGjgc8B86y1ZwNe4Cb0XUm0PwJXnnSsq+/GVcCU8K/bgV8lqMZ2KRmsgPnADmvtLmutH3gIWJLkmtKOtfaAtXZt+Od63D8Uo3GfxZ/Cp/0JeHdyKkxfxpgxwDXAveHHBlgMPBI+RZ9LAhljBgMXA78DsNb6rbVH0XelP8gAco0xGUAecAB9VxLKWvsvoO6kw119N5YA91nnNWCoMeaMxFTqpGqwGg1UdXi8N3xMksQYUwrMBl4HRlhrD4ALX0BJ8ipLWz8FvgqEwo+HA0ettYHwY31nEmsiUAP8ITw9e68xJh99V5LKWrsP+CGwBxeojgFr0HelP+jqu5H0f/9TNViZCMfUVyJJjDGDgL8DX7DWHk92PenOGHMtUG2tXdPxcIRT9Z1JnAxgDvAra+1soBFN+yVdeN3OEmACMArIx001nUzflf4j6X+XpWqw2guM7fB4DLA/SbWkNWNMJi5UPWCtfTR8+FDb0Gz49+pk1ZemFgDXGWMqcNPki3EjWEPD0x2g70yi7QX2WmtfDz9+BBe09F1JrsuA3dbaGmttK/AocCH6rvQHXX03kv7vf6oGqzeBKeE7N7Jwiw2XJrmmtBNet/M7YKu19scdnloK3Br++Vbg8UTXls6stV+z1o6x1pbivhsvWGv/DXgReG/4NH0uCWStPQhUGWOmhg9dCmxB35Vk2wOcb4zJC/991va56LuSfF19N5YCHwrfHXg+cKxtyjBRUrbzujHmatz/C/cCv7fWfjfJJaUdY8xCYAWwkRNref4Tt87qb8A43F9c77PWnrwwURLAGLMI+Iq19lpjzETcCNYwYB1wi7XWl8z60okxZhbuZoIsYBfwYdz/+dV3JYmMMf8N3Ii7y3kd8DHcmh19VxLEGPMXYBFQBBwCvgX8gwjfjXAA/jnuLsIm4MPW2tUJrTdVg5WIiIhIoqXqVKCIiIhIwilYiYiIiMSIgpWIiIhIjChYiYiIiMSIgpWIiIhIjChYiYiIiMSIgpWIiIhIjPz/g2JAIvRT5zUAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f63cfdc4ac8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(best_solver.train_acc_history)\n",
    "plt.plot(best_solver.val_acc_history)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 5000 / 5000 - best_val_acc: 0.554000\n",
      "learning_rate is: 1.91e-05, weight_scale is: 7.60e-04\n"
     ]
    }
   ],
   "source": [
    "best_val_acc = 0.0\n",
    "best_solver = None\n",
    "\n",
    "hidden_dims = [100] * 5\n",
    "lr = 1.91e-5\n",
    "ws = 7.6e-4\n",
    "\n",
    "model = FullyConnectedNet(hidden_dims, dropout=1, \n",
    "                          normalization='batch_norm', reg=2, weight_scale=ws)\n",
    "solver = Solver(model, data, update_rule='adam', \n",
    "                optim_config={'learning_rate':lr}, lr_decay=1.0, num_epoch=5000, batch_size=500,\n",
    "               verbose=False)\n",
    "solver.train()\n",
    "val_acc = np.max(solver.val_acc_history)\n",
    "\n",
    "print('learning_rate is: %.2e, weight_scale is: %.2e' %(lr, ws))\n",
    "if val_acc > best_val_acc:\n",
    "    best_val_acc = val_acc\n",
    "    best_model = model\n",
    "    best_solver = solver\n",
    "    best_hidden_dims = hidden_dims"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f63cecb3278>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(best_solver.loss_history)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlYAAAHVCAYAAAAzabX0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzs3Xd8E+UfB/DPdbcUCqXMDsueZQ/Ze6MoCopbxI3jh6CICLgA98YBKA4UF8qUDbL33rNAKVBWSwelbXK/P55ccpdcVps2bfN5v159Nbm7XJ6su+99nyXJsgwiIiIiKjg/bxeAiIiIqLRgYEVERETkIQysiIiIiDyEgRURERGRhzCwIiIiIvIQBlZEREREHsLAioiIiMhDGFgREREReQgDKyIiIiIPCfDWE0dFRcnx8fHeenoiIiIil+3YseOyLMuVnG3ntcAqPj4e27dv99bTExEREblMkqTTrmzHqkAiIiIiD3EaWEmS9J0kSSmSJO23s16SJOkzSZKOS5K0V5KkFp4vJhEREVHx50rGahaAvg7W9wNQx/T3BICvCl4sIiIiopLHaWAly/JaAFcdbDIIwI+ysBlAeUmSqnmqgEREREQlhSfaWEUDOKu6n2RaRkRERORTPBFYSTrLZN0NJekJSZK2S5K0/dKlSx54aiIiIqLiwxOBVRKAWNX9GADJehvKsvytLMutZFluVamS06EgiIiIiEoUTwRW8wE8ZOodeCuANFmWz3tgv0REREQlitMBQiVJ+hVAVwBRkiQlAZgIIBAAZFn+GsBiAP0BHAeQBeDRwiosERERUXHmNLCSZXmYk/UygGc9ViIiIiKiEoojrxMRERF5CAMrIiIiIg9hYEVERETkIQysiIiIiDyEgRURERGRhzCwIiIiIvIQBlZEREREHsLAioiISGX0H3sQP3aRt4tBJRQDKyIiIpU/dyR5uwhUgjGwIiIiIvIQBlZEREQlmCzL2HnmGsQMc+RtDKyIiIjy6WpmDnacvubVMizYex6Dp23E37vOebUcJDCwIiKiQnE+7QbWHr1U6M8z6Iv1mLL4kMvbbzpxBWeuZHnkuYd8vRF3fbXRI/tSW37wImqNW4zMm3k2665n5+LffefN989eFa/lWEqGx8vhitWHU5ByPTtfj33t730Y9u1mD5fIuxhYEVGhung9u9g1Bh712260enu5t4uRb+8uOezRXmsL9yYj8XKmw20Onb+OVYcvurS/GetOIn7sIvT5eC0e+m6rJ4qoa97ucziXegN7ktLwzdqTLj3GYJQxbPpmdH5/NX7efLrA1WcnLtl/3wxGGd+tP4WbeQa39/vhsiMwGGWc1gkAR/++B0/P3omTl0Qg9cuWMwCALJ0gbPC0DZrAr/HEpUiYuNQcjCkenLkFfT5eq1n2544kXHQQMK07dgl7k1Lx6KxtuMcUHK05koIDyWma7ebtPmfzfIrZW85g08krdp/DGVmW8dOmRKRn5+Z7H57GwIqICtXD323F6D/2IC2r+Bz45u46h8sZOZpleQYjsnJsT0yuGPvX3gIHOpk38/Dx8qPINRh11xuMsjl78dWaEzbr48cuwoR5+833/9yRhP3n0my20zPyl13o88lah9v0+3Qdhs/a7lIg8smKYwCA69n230/1+51nMOJGjjb4WHv0ElYesh/IGY0yXpizGx2mrjIvsw5g9E62D6sCvfH/7Me2RMfVeEajjJT0bBiN4nVn3MzTfQ+MRhlfrTmhCUS+33AKby48qPt5qTV/cxnixy5C/NhFSE69AYNRRpbp/ZAhY9Xhi1h79BKycw3IyTPi7LUbAICsHAPaTl6Bc6ni/pVM7Xd666mr2HkmFTtOX8NLv+8xlz/9Zh4GfbkBAPDbtjM4dP461h27jCMX082PTbuRi9F/7EGvj/7D1/+dgCzLyFAFbov2nseDM7fi9i/Efk5dzkSuwYhHvt+GAZ+t15TjhTm7MeCzdZr35fQV24A0z2DEsgMXED92EZ6dvROA/meYMGkp+n6yFm3eWYEary7G6/MOYOK8Aw7f46LEwIqIdP2x/SxWH04p8H6UE41R52SUeTMPr/29z2m2BBBVI3/vss18pWblIPNmHnLyjA6rI9Ju5OK9JYex9MAF3fUjf9mFhhOWOi2Hnjnbzrq0ncEo40Kafhk/Xn4Un648hr936reTmTh/PxpNXIo8VeCVnWvAxHn7kXZDnHx+3HQaAJCcegOj/9iDgZ+v192Xnpt5RtN/Ay6l37S73dmrN5zuyzrw+GTFURy5IE7aP28+jUV7z+PJn3aY3+8HZ25FgwlLNI956LuteOyH7QBgDhzUdp1NtVn206bT5vdk88krSJi0DAv2JGu2WX/8sub+0G82mW9/t/4UtiVe1awf8+detHlnJUb/uQej/9iDxhOXYvw/+3E546YmED+WkoF3lxzGkz/twJkrWej+4Rq8vUhUT6Y7CDAB4JrqouNg8nW89vc+nDFleKYsPozhs7bjoe+2ov7rS1B3/L84dP66efuL1y2fVZ5BRnp2rvn7oH5tf+3U/naumoKwV/7ah36froM15bVdz87D1H8PY9zf+9F44lLz9/fZX3baPOahmfazk0qQnXEzD28sOIgu76/BpPnaYGjU73vwxE87AACL9p3H6iMpSJi0DCsPXcT17FycuZKFqf8eRnp2Hg5fSEeK6nt6NUsbVHpTgLcLQFRa7D+Xht+2ncWbgxpBkiTz8pTr2fDzkxAVHlyg/R+5kI7alcPh7yc53Xb/uTT8svUM3rmjsaYs1o5eTMf0tScx9a4mNvsd8+deAEDi1AEFKrej/Mb0dScxe8sZzN5yBvsm9UbZkEDM2nAKZUMCMbhFNNpNWYXQIH+sHNUFj/8oTrLNYyugcrlghAWJw1ezN5cjIjQQXepWwvw9yTgxub/Na5FlGU3fWOawnEtMAZcsy5r37FpmDsbP248pgxNQLiTQ4T62J17Fv/sv4PWBDQEAp69kYsvJq7i9WXWcvJSJxfvO44vVx7Hp1e7IyTMiKjwY17NzERLgjxu5IkORnHYDB5LT8MuWM3hrUGP4+Un4ZMVR/LxZVPfkGS3v6PBZ27DxxBVNedccScEj329zWE4A2HnmGubvTsbE2xqal70wZxdu5Biw7OBFu5/7iUsZ+GL1MUy+MwEB/rbX5kcupCPTKvv0yYpj+H5DIj4b1hzj/9mvWXctM8dcFTR3ZxJWHU7B5MEJ5vVzdyZh1O978PuT7dCmRiT+3Xcep65kIiTA3+a5b+YZceuUlUjNyjUHu6uPpOC2ptWdvh+5BiPeXHhQs+xg8nVzQDJXFfAq31m1PaZAb/fZVHR+f7VmnaNfrMGo/YWMMH3PFdaBoNoLc3Zp7ucZZbR4azlyDTJe6FHHwbMKbd5ZYbPsmdk7MOm2RjbVgr9uFa9355lr6J9QTXd/6iq9+LGLsGN8T0SWCTIvqz1uMR7tEG++P2tjoubx862C4Kd/FkGWEmA3ql4OB5KvQ4/zo2LRYWBF5CEPf7cVVzJz8ELPOpogqs3klQAKFqAcT0lHn0/W4tlutTCmT33NurNXsyDLQFzFMPOyB2ZuQWpWLgY2qYa1Ry/DTwJe7lvferd4+ucdOHEpE+uOXcaF69k4NaW/biA2a8MpnLl6AxNUJ+FRv+9G+1pRuLtlDABg15lrqFe1rDngcWT4rG24v20c8gyWk8qNHAMmzj9gPoEFBfjhgikDlZxmyVh0/WANbq0ZiTlPtDMvS7uRiyX7RWDU+p0VuJqZg3nPdoBBltEirgJ+c5BRSk69Yc7WAMCNXAPCggLwyPdbsebIJdSqVAYnLmUiIToCT3Wp5fB13f21yBAogVWX99cAAF7+a69muzlbz+LTlcfQLLY8dptOyM1iywMQQYhSlfZc9zqoGhFivg9AU1W48YQ4kanLf+i8pToHAHLyjAgK8EPmzTwcS8lAs9jyuJqZg8HTRLubahEh5m3n7bac2IxGGX5+EnINRuw6Y8kOjfxlJzJzDOjdsCp6NqxiXn4p/SauZeXYrVI0GGVNNZziq/8s1WSjVNVVCiWDdCwlHY2ql8PTpiqi53UCh/eXHjHfVt6TuTvPoUbFMnjOQaAxaf4B9Fa9FkX/z2wzOfa8t/Sww/UbT1xG+1pRNss3OAicnLFu33Xk4nXkmn5Tn648ZrP9iB+0QVuKTmZy8b4LWLxPP6sLAG8tPOhyEDP+n/344r4W5vt5RhnT153S3VYva5adq60WP+6lxvnuYmBFVEBXM3Nw+Px1BAWIq/ecPP02MmpXMm7i6MUMtKtVEYC4Chw+axvWjO6K8mFBmm0Hfr4Ot0SWAQB8ufoEdpy+pgkqOr0nro6VwC01KweppqqF+6ZvMW/3ct/6MBhlLDtwAX0bV4UkSfAzBVFKAJNnlCFBRtcP1pgf1+2DNThlqqpTB1Zzd57D3J3ncHfLGOw+m4o7p21Er4ZVMP2hVpryp1q1rTIYZaw6nIJVh1PwbDdLoNL/s3Wadk/qg6j1e7r5pLa6BgCUeFCp4lDakGx7rafdq9zzaTfQXtVGRynfsgMXsOaI6M2mnLz+2pGEp7rUwo7TV1G9fCiqRYQCgG6bKCUosUc56e1WVWft1qnaOnstC4lWbVGOXrQ9uagDkdVHtNW3Jy9noH7Vcnhhzi6sOJSCPRN7Y9FeSwA15V/9gCDXaMSzP+3EikPa/SnZqBE/bsfdLWOQmpWDGQ+3Rmud7Ie9MqrpvW7lvQcAo+ntfe3v/Zoqys90Agd7Plx+FB8uP4onO9fUXT9rYyJ+3JTo8v70WLfZU5ux/hRmrLcEFM93r41RvethyNcbnbbxcoezatoVDtqsuep8WrY5uHWmcXSEbhMAPerqTXtuOji2+jnIzBc1BlZELpi14RQmLTiom9F5YMYWHDx/HdHl7Z9orQ2bvhlHL2aYg6EvVx1HalYutideQ8+GVZCTZ8TcnUkY2ioW+89dx/5zloOOXlChKc/MLXbXzdqYiLcWHsRHQ5ticIsYm4PRtawc+EsSkq5ZDtCnnLR/upCWjTtMQcy+JPuNpXONRny0/KjmhKiuBbE+Mamr8/QOqH/tSMJdpmyZvW0A4IeNiXZ7ZXX/4D+bZRuOX8FTpioItWMpGTYN1McPaKBbzdTh3VXo11i/usQdQ77eZLNMr2u/uh3R1lPa70dy6g30/cSSDdiXlOYw6LM8LtsmqLKm9Pbcm2QbHLnKurzWfttuyTZ+62LPP3sc9Rw0FuHYmp+tOo5HO9TwaFBVHO06k4rmbxZN79tiFFcxsCLf8OzsnVh+8CKOvtPP4XbxYxfhma61bKrNlLYXh86n41hKOgY1izavU3rSKD/sG7kGPDt7J5YcuIADb/Qxb7fy0EX0aCCqG5SsgyzL5tQ9YGmP9OXq4/h05TEEB+r3LzEYZRiMsjlLBohA45u1J3QzGoAYu+eXLaJx847T18zVLmpt3lmJd+9KsFlubYuqLcVtX1gaSF+4no25O5MwuEWMzWPavLPSZpmj3lLqwEqvCuClP/agbIjzQ9gXq4/bXae0a1LTC6rseXvRIXMDZbXzadn4boN+lUdRGz5LW/3jKPBW66bKWjqj9AwrbFk57g9bUFw1f6vkDvfhKk9kyFzlStvTosLAikqVoxfTsfboJYzoZEn55xqMWKQaTG/P2VQcSL6O+9rGaR6rdKeetuaEObA6l3oDf+1IMl/NKm0ujl5Mx/AONVAxPBh+EmAAzFkedXag/uuWnk5/7kgyB1aKtBu5aKa6otuXlIqdZ64h1dTDZYKdLsSjft+NebuT8c+zHczLXvrDNlBSGzbdMgifdcNbtVf+2md33chfdqJmVBl8tsoSrFj3IBv1+x70algFZZ009HZG3bPsuV936W6j9CAiIt/2dNfa3i6CGQMrKlUGfrYeOQYjRnSqiWuZOZAkS+82hdL2Rgmscg1GXEjLRuVytr32+n2yVncsni9Xn8CCPeexZnRXSJDguO+bkKdT12A97owSsCiZGHvdtJVGxhPn7dddX1gW7j3vfCMACZOWoU2NSHSrVznfz6UMHUBE5EygPzNWRB63LykNOab2TbIs66bar2TY9oJ5e+FB/LDpNB5pH29eNm/3OSRERzgc4PDM1Sx8suKoy3X7eTptr65m6jd4dTbujWKPgzZN3rb11FWn7Wcc0euxRESkJ1Bn6A9vYWBFpcLhC9c1bX262mkfstcqEMm8mYcfTJkR9ZgqL8zZjWe6Ou5aD0BTJeZMrkFGn4/XatpF6TVOJiIi9wSwjRWRa75cfRzzdp/Dsv91cbjdXKvRqvXm1wKAR2dZBk58d8lhnHAwLso0J9NQuMvRQH9ERJR/zFgR6TiQnIYrGTnoXLeSeZky4F+uwYgWby1Henae7kCb+emG7Wz+LiIiKhkYWBHpUCbu1AucftlyxtzuSJlyxGCU8f7SI9h4gpkgIiJfFsDG60TOqbvxqwep/GnzaZxLvYFv/ivYYIFEVLpElgmy2yGESjdXR3gvCsUnd0Y+KelaFq5na6c8aT9lJT5YekQzRYa6YfmEeQcYVJFTrgweWlI81O4WbxfBxujedb1dBLPVo7sCAPo0sp3vT8+vj9/q0eef+XAr5xvZoTdHoVrXepUcrs+Png0cD4NSWJ/te3c3wYpRnfP12JqVyjhcH1WmYJPcexIDK/Kqju+uRvspq7DioGWE3uS0bIejZZPvcnZwVQsOKJzD2+LnO+FhNwMd9UCujjzc7hYsfr6TzfIG1cq59XxFoUKZIOyZ2BvdTCf+jrVtJxh2ZEyfenbXrR7dFbGRoeb7IzrWcLivGlFlsO7lbnhzUGOXnluZo1NPQnSES/tQaxUfqTu1kdqTXWpijSkANJejZkV8+1Ar/PV0O/0HARjdW/s+1apUxuaioXt9ESi9e1cC9kzsjdBAf/O6+lXLonblcM326omR9agHWFbsGN/TZtnwDpbPZWQ35wN0tqtZEbUrl8XmV3vYrHP2+FUvdcW6l7uZ7z/aIV6z3pVpmooKAyvyuoybeRjx43bnG1KpM7CJe/PpuXLwVgxrE2d30t2CKBcagDdcPIEr4iLDXNrujUGN0bC6bRDlTi3Hm4MaubztJNWk2u7o06gKhrSMRURoIL5/tA32TOyN7x5p7dY+bqlo/z2pEVXGPPkyAIwfaCmn9Un5i/uaAwBiI8PcasCsd3IHgFmPuvc6ANHVf/KdjfFk55pY+mJnPKH3vZOB+CjLhcHmV3vgh+FtAAAtb4nUBC67J/Qy344I1c5gEF+xDLaO66mZLksJKSqWCUZEaCBk1YDFEwY2RN0q2sAqRBV4AcCu13tp7qvnEJ3+UCsceKMPKobbZoTUk7I/36OOzfrmceVx4I0+OPRmX+wY3xOxpt9B1YgQm21Hdq9t8751qVsJHwxpit+eEBnGWNXvqBjV/NlgYEVEXnN3S9s5Be3ZMLY7BreIQZTOAV5PpbLBeLV/A5e2/ebBlni5bz3smdgbJyb3d7itMgl3i7jyLu0bEG1/9Bx5uy++fbCly/tRU1cPKkHK6N51MaxNnP6JXUd4SCCOv9MPJyb3x8f3NMXgFtGa9dMfaqUZd00xpk99zfKI0EAEBfihdXwFVC1nOWnqnWwV9qY8UjJG9ubJrBoRgj+fsmR4BjZxnCmyp2K45TN5zJQRO/p2P00AEV0+FL0bVkFwgB8WPtcR0+63ZHqe724J8v39JJQNCcSr/RugXtWyGKfzvVPPvBAa6I+qESGa91D9vOXDLGWzDiCiwoMRGuSPMsGWrNWQVuJ31MAUlKsneQgLdl4lXsHq++knAR8NbYrFz3dCr4ZVNM9lT1CAH05M7o/W8RXMyyQAZYIDEBrkrxuYqYUE+pvft2Ft4nDsnX74/pHWuLtlDNrWtJ9hLI4YWJHXGItyOnkqUp8Na+50m8HNo81Biiuiy4uqoQEJVQEAz3XXz14df6cfJt+ZgPvbisDj9yfbYcHIjrrbKk9fu3I4nulaGxGhgXYncw0LElf57lY4fDS0qd11wQH+Ls2p2KmObTVbt3qVzYHQyG61kTh1AEZ2r4NAfz+M698AJ50EiIDoYRvg7wd/Pwl3No/RZAQToiPQq2EVrBzVBTMfbqWpfpLtpAv+eKo9No+zZIIcVcdKAO5oJoKix1RVfQueE59V4+oiwHrrDtvsoPLsLW+pYLPuwVu11bT9Glc13/5oaFNzr2P1gJKvD2yIxKkDbILIOlXC8e1DrXDk7X5oHB2B/gmWDOuzqu+fnwvfY2XmhRkPtcKy/+m3M/r7mfY21cZK9ik2MhTv3d1EkyVS9G1cDYlTB5h/I8rnM/nOBDSLLY8HbnWv6trfT8LgFjG62VNnjwsLsnxPXHlfAvwkjO1nmfQ+ceoATBmcgEB/P4fVe3pZr+KCgRUVut+3ncWuM9fM989ezcKXq4+b5+zzdU1i3G/TkV+/PN7WaXVaZJkgJE4dgBkP5b9BbpWytlenb1lVUX04tKk5uO7mpIGucsIALBmj8mFB6J9Q1WbbAH8/3Nc2zhwgtakRiQQ77/HaMd3w3SOtUKtSuO56AChjCqjeGtQYVcoFmzNmo1VthPwkoGxwAFa91EVTRZM4dQAGt3CclWscXQ7lwwI1DarV7YsiQgMRGxlmMwxJZJkgc9uZKuVsTzJ+fhI2jO2O35+0bb/z7YMtER4cgC51te97zUrh5hO7ck6MjQxDjwZVsG9SH9QxPZ+za6LalcMxZXACbje1O6oeEYIPh4gAs5rqhDiiU02UDQnAU11sZzlQXlstU7u6f1/oZNPwWe+0+9YdjdHU9HknTh2Arx5oiT+eaofxAxpoPgvle+So/Zp1NRwAfP9Ia7x7VwKCAyzVaa6M+h1XUbyOng2raKq01JrHVUCzWG0mVIlhJUgY2irWpeyR8vkomaz2taJ0h7HRkzh1gNMLnic61zQ3qn+5bz20qRFpXqd+K1wJrI5P7q/7+TvzSPt4TLu/BYa0jMEQNzLfRaH0dJuhYuvlv8QkyEff7ofLGTfx8HdbcVI1fIIv++OpdmgdH4n4sYsKtJ8Tk/tj66mrGDZ9s8PtyocGYXSfeg47BygNX3s66a2kmHhbQ7yx4KD5fqC/pEndt4mPxOTBCahdORyvzztgXi5Jkrl6RJ0lWj26K7qppiRa/HwnzdWpsq3RKJsmwLaoqhNgKHrUr4yhrWNxPCUD7y89gvkjOyA2MszuSQ4Alr7YGYOniQuAPo2r4i7VAbx9rSjsGN8TLd9egcEtYvDBEPuZKQBY8mIn5BlkDPx8vWZ52ZBA7J7QW7Ns/rMdcej8ddw3Y4tm+cLnOqJqRAhOpGSgaWx5NI6OQPPYCnYbY0eXD0V11Xs354lb8dHyo+hevzL2qwJANSXboXdKnHpXAqYsPoz4KMdtxlaMssyUoD6h39UyBg/M2ILzadmQJKBxdAT2TRLliK8YhkTVjAnPdquN1vGR5tfmTgP+Hx9rizOqfbWOj0Tr+Eib7RY+1xGxFWxfyxf3NcfIX3aZs2Zq3erb9qhzpeH0o6q5SN2hxLB6Mcqa0V11x2+a8VArfL8x0SbgW/VSF3P7ql9GtMV9M7aYB2Se/lAr/LzZ8cTn+yb1xslLmWiqCv6e6Vobz3TVz965kZB2W4CfhP4J1TRZxOKCgRUVmVf+2ou/d50rVrOQe8LPj7VFQkwEmr6xzO3H6h3s1d65szFa3lIBI3/ZheMOpt/x95Mc9nRSqBu1WgvwkzCkVQweahfvcB+zR7TF/aYT/uLnO6Fh9XKawOolUy+moa1i8Pv2JHw4tKnd4KVz3Sjc1rQ6XulbD2/d0RjBAf427ZGsqyNaxFXATJxC/WplMbBpNSzadx4A0KthFYfBzUxT4+peDWR0r1/Z4YlakkSmoF7Vsna3AUS7mBWjOtu8vh3je5onBFfUryqeb9n/OqP3x2sd7rdCmSDd8jU2tT9SsmaufO7q7MOtNSvqZrDUEqIjMLhFNJ7VyWy2vCUSfz7d3uHjnZl8ZwI+XH4EbWtoyz3/uY5Iy7IMveLotSmvyN6gkBGhgXazlGqN7fQAHNikOmpVCke9Ko4/f1cF+ktu91rb/GoPBPpLqBAWhKGtYvCoqgeeQt0YXq1b/cq6AWBNVWa2fW1tFqtXwyro5eRiqmxIoCao0vPGoEbYdy4NKek3ddvnKcYPaGC37aErXMmGeQsDKyoyf+8S8/nlGkpu26qdr/dCSKAfZm1MxHtLxHQ7HXXav+TXO3c2xmt/7wcADG4RjfvaxEGSJLttWhyJCg/C5QztYInKwSgsyB+yLKYKyjPK2DOhN/z8bBsU//r4rTZZsA61o/DLiLY4finDJuiZP7KDufHx1MFN8GLPuqiuqsZTtDNltIID/PG5C+2x1AY0qYamsd0QY8o09E+oisX7LuCDIU11q26s+flJTrMfeyf2Nlen3N0yBj9sOo0gOz3Oale2Pfk6aqhb10Mna3cp7ZmcCfD3w0dDmxVaOeIqhuHTe20/83IhgSjnQnszQFSZjehYA8OdDMNQEJ4c4sKV76U1dZb2vbsdZ0OLk5gKYdj0ag9MXnwIj+sM26DQG9LBFeHBAci4mVeshlewxsCKCk3K9WwcvWg/y1KcTB2cgLFz9zncpkq5YPMVllIF5Wx8HVdNGZyA5nHlUTMq3BxYPdI+3pxtsA6rnuhcE7dUDDNva23vpN44mHwd934rgqL5Iztg3bHLqG/KwOw0da9OupaFzSevIiJM/8DfrlZFfDS0KWpWCscdqjZx7WtHob1q3KKo8GCEBfmjSYzlatbPT7IJqn56rA1Ss3LRt7Ft2yh3xKiqbz4f1gLv321wqe2Jq9QB5oTbGmFM3/oOr76LuwNv9Cm0cb28wd9P0gzB4C1LX+yMHaevOdxm4m0N0bWe4wE5Sxt/PwmvF9LnM29kB2wo5hPaM7CiAkuYuBRDW8eaf0iZN/Pwz+5z+Pq/Ezh79YbXyrVgZEe8seAAtts58MVUCMXH9zTDxevZGNikOu5tE4ebeQY8MGMLtiVaHhPoL+H9u5uilaobcbf6lfDuksMY6GRQQLWo8GBczrBM0xOuCgSGtYkz325UvRwOJF/XprpNkdUrfeujZ4PKqFOlLBbuTbb7XOVCAtFW1aC0SUxWsduuAAAgAElEQVR5TdCjtLOoXbmsbsZFTWnwu/KlLjh6IV13m+06gwfq6VTH86NI+/tJHg2q9PYfXoj7LwqF+f74snpVy9qtLp71aGtEhQfbrW6k/KlVKdxhZ5PioPRcwpDXpN/Mw8z1p8z3J80/gNf+3u+VoGq5qhtzQkwE3r27ifl+tFX25LtHWqN1fKRmHJzgAH9Mu187rtCql7rijubRmixJ/arlkDh1gE0PHgD4cEhTDLAa+PKpLrWwfXxPcxuGreN62G08rPS80juZ925UBXVMVUlK1qyfneyPJElodUsFm+7n+VWrUjj6FVFD0fvaxjnfqASLCg/CBCdX9IGmDFODat6pOqSC6VqvMoMqH8XLGPKY7YlX0So+ElcKeRLU8mGBSM3K1V1Xx6r9Sq1K4Xilb318v+EUFr/QydzAfMrgBLttXSqphgpY93I3h73G9NzVMgZrj10CAHx8T1Pc2dzSk+zje5phb1IqKjvovTZlcBMMaRWraZiq18JKSWg5an5V0IbG3jL5zgQkREdg/m77WbmSbPv4Xk63CQ8OwG9P3Goe9JGISgZmrMglN3IMOHs1y+E2d3+9CYD7Ayi6q6adnjD2PN21Fra+1lPTgFRd9aanuWlUbXeDKoVSjWcd9IQHB6B9LceN3UOD/NHBat41vS7wym11T78q5YrPRKQFNaxNHH59wrOT5ZY0bWtWdLlBNxEVD8xYkUse/3E71h+/7PIgc4UlKMDPZnDC/8Z0xYMzt+KMKvBraqer9bT7W9jNdqnNHtHWpe3seW1AAwT5+3lsjBXlNavbXQWYeqmp50db+mJnm27+RERUdBhYkUvWu9ELI7/Di3SqE4V1x7TP89NjbfDgzK3m+/880wFj54oBR2c92hodakch0N8Py/5nCSj2TOxttweUq4FOWFCAZmoGd0WFB2vad3mK+r3tXr8ynupSC493svRMVM8xRkRERY+BFRWI9Xx/osoqf5HVj8PbIMdgRL3xS8zLKoQF4ZaKYTh9JQtH3u6L4AB/GE3VYhXLBJuzNSGB/uaebvkZM8YTbqkYZh613NP0Bvb0t5pji4iIvI+BFbnFaJQ1A7PlGrXVTgv2ns93xkqSJAQH+GPn673Q4q3l5uX/jemm2U6p6SpuA+9al9OT1POFERFR8cXG6+SWhabpQxQGq4zVR8uOuHzqt5fdiSwThIYORj1+pW89lA8LRM1K7jViL8leH9gQFcsEoUpE6WmcTkRUGjFjRW7JvJmnuZ9nFVglXsnSTKRqT+LUAUjLysWpK5maEb0VjiZw6Vqvss2ktaVdn0ZV0adRwUYrJyKiwsfAitxinaEyFGDev4iwQDQLE8Ma9GygP/lncavuIyIicoSBFbnFaDUwk3XGKj+2juthM1ddmSBRTehfjCfaJCIissY2VuSWnDwjFuxJNg9YaZ3Byo/K5UIQHKBtb/XFfS0wpk891LMzOjoREVFxxIwVueX7DYk4l3oD2bkGDGkVi9xCGoyyakQInu1Wu1D2TUREVFiYsfJRiZczET92EVYcvAgA+GnzaadT1gDAtSwxD+CB5OuIH7sInd5b7fZzP9+dARMREZVODKx81O6zqQCA+XuSkZ6di9f/2Y9O761GhlWvP2sBpjZPszYmuv2cc59pj+oRIRjRuabbjyUiIioJGFj5KKW3nQwxMKfi85XHHD6uIG2qWsRVwMZXe3BSWSIiKrUYWPk4WZY1A3rmqoZPkGUZf+5IQkp6tnlZZo6hCEtHRERUsrDxuo9SZ6msh1AAgFWHL+JaZi5G/7GnKItFRERUojGw8nEytKOcSxIwb/c5vDBnt7eKREREVGKxKtBHmcfdlAHZasQEBlVERET5w8DKh+TkGfHhsiPIysmDZGpZlWswIv1mrnmbmetPefx5ywYH2J2yhoiIqDRhVaAP+W37WXy+6jgMRhmNqkcAAJYdvIhlprGsPGHdy90QGxmGjccv474ZWwAAb93RGHc0j/bYcxARERVXzFiVUpczbuJCWrZmWW6eqPPLyjEUyuTG857tgNjIMABA+9pR2DC2O3o2qIxeDZmtIiIi38CMVSnV6u0VAIDEqQPMy5R2VZcybsLTcdUX9zVH09jymmXR5UMx4+HWHn4mIiKi4ouBlQ/xN0VWi/aex6K95z2670B/Jj+JiIh4NvQhUmHU/5n0YuN0IiIiZqxKm1yDEX46AdSS/Rew88y1QnteP7/CC9qIiIhKCgZWpUyd1/5F/aplNcvSs3Px1M87Cu05l/2vc6Htm4iIqCRhYFUKHb6QrrmfMGlZoTzPb0/cijY1Igu1ipGIiKgkYWBVgh2+cB2xFcJQJrjoP8Yt43qgSrmQIn9eIiKi4oyN10soo1FG30/W4bEftjncbumBC4Xy/AyqiIiIbDGwKqGUiZM3n7zqcLsnfyq8tlVERESkxcCqhDpxKcPbRSAiIiIrDKxKqLVHL9ksyzFNWeMJQ1rGeGxfREREvoKBVQkly5bbyak3AACDvtzgpdIQERERwMCqxJJhiazaT12FjScu49D56x7bf/O4Ch7bFxERka9gYFVCqTNWALDyUIpH9z+sTaxH90dEROQLGFiVUEarwGrm+lMe3b/1oJ9TBidg3rMdPPocREREpQ0HCC2hjNYpq0I2rE1ckT4fERFRScSMFdlVsUyQt4tARERUojCwKqHkQshYhQb6a+7/+0Injz8HERFRacbAqgQ5ejEdkxcfgizLNm2sPGHty9009ytz2hoiIiK3sI1VCfLAjC1ISb+JEZ1qFEobq0plg51u8+m9zXA5I8fjz01ERFQaMGNVQny5+jhS0m8CAK5l5mLnmVS3Ht+rYRWbZYue72i+Xa9KWZf2M6hZNB7rWMOt5yYiIvIVLmWsJEnqC+BTAP4AZsiyPNVqfRyAHwCUN20zVpblxR4uq097f+kR8+17vt2E1Kxctx7/9QMtcTPPgJAAf9QcJz6aRtUjzOsXqoIstVsqhnl0qhwiIqLSzGnGSpIkfwBfAugHoCGAYZIkNbTabDyA32VZbg7gXgDTPF1QsnAlqBrbr77mvr+fhLCgAPj5SbrbB/qLr0L3+pVRt0q4efl/Y7ph06s9ClBaIiIi3+FKxqoNgOOyLJ8EAEmS5gAYBOCgahsZQDnT7QgAyZ4sJLnvqS61cEtkGJ6evRMBdoIpAPjzqXaoGG5pW/XdI62LonhERESlkiuBVTSAs6r7SQDaWm0zCcAySZKeA1AGQE+PlI5wPu0GqkWE5uuxPRpUQYNq5fD6gAaa5c93r41LGaK9Vqv4yAKXkYiIiARXAiu9dId1l7RhAGbJsvyhJEntAPwkSVJjWZY1jXMkSXoCwBMAEBfHkbyd2XrqKoZ+swk9G9g2PHdFUICf7lhUo3rXK2jRiIiISIcrvQKTAKhn5I2BbVXfYwB+BwBZljcBCAEQZb0jWZa/lWW5lSzLrSpVqpS/EvuQg8lpAIAVhy56uSRERETkClcCq20A6kiSVEOSpCCIxunzrbY5A6AHAEiS1AAisLrkyYISERERFXdOAytZlvMAjASwFMAhiN5/ByRJelOSpNtNm70E4HFJkvYA+BXAI3JhzLniY/gGEhERlSwujWNlGpNqsdWyCarbBwF08GzRSrc8gxEB/o7j2sKYtoaIiIgKD0de94IzV7JQ+7V/8deOJN31BqOMNDcHACUiIiLvY2DlBUcupgMAFu87r7v+3SWH0fTNZUhOveHS/qpFhKBhtXLONyQiIqJCxcDKC05cygAASHbG7Vy0VwRcM9efcml/FcODsFhnWAUiIiIqWgysvGDqv4dNt/QjK3fb/X91f8sCloiIiIg8waXG61Q4rDNW+8+lIdDfz63egIfe7IvQIH8AwNIXO2PLqSsY0jLWyaOIiIioMDCwKgJKBkqyiqSUe9+uPYHJiw8jP5SgCgDqVS2LelXL5ms/REREVHCsCiwCtV/7F8/P2Y0bOQZ8tvKYZp0sy/kOqoiIiKh4YcaqCBiMMhbsSUZshVBMW3PCvFySgGHTN3uxZERERORJzFh5yOkrmcjONTjZJktz32CUsfnk1cIsFhERERUhBlYecDPPgC7vr8GLc3Y73G6R1bhVOYb8D63egONWERERFTusCvSAXFOAtO6YmHd6b1IqKoYHI7p8qMPH2RnGyiV/P9MeN/OMBdgDEREReRoDKw8wmAIrg6n33+1fbAAAJE4dgFkb7A/yWZCpAEMC/RES6O98QyIiIioyrArMpwnz9iN+7CIAwJ87xZx/2blGvLtE28Nv0oKDdvfhrE0WERERlSwMrPLpx02nzbdTs3LMt79S9fpzJodVeURERKUKAysX7Tmbii9WHXO+oYqzIMvo5tQ1REREVLyxjZUdKenZGDd3Hz66pxnKhQRi0Jei3dS51GwMbhHt0j6sqwWt7U1Ky1fZosKD8vU4IiIiKlzMWNkxbfUJrDiUgj+3J2mW/7r1DIZ8vcl8f/+5NBw6n15k5RreoQbWjOlWZM9HRERErmPGygnriZKtDfx8fdEUxCSyTCDCg/mxERERFUfMWBERERF5CFMfdsimhuVvLDjotK1UUZKcpdCIiIjIa5ixckF2LodFICIiIucYWBERERF5CAMrOzjCFBEREbmLgZUdHLuTiIiI3MXACsDVzBwsO3DB28UgIiKiEo6BFYDhs7bhiZ92IDUrB4fOX8fygxchF4PKwGFtYr1dBCIiInIDh1sAcOZqFgCg2ZvLvVqOwS2iMXfnOfN9Dq1ARERUsjBjBcuYVd7WvX5lzf1APwZWREREJQkDKwAZN/OK/DmbxETYLOtRvwp6NayCRzvEAxAZq8SpA7BgZEfc0ay6aVlRlpKIiIjcwcAKQK6h6DJWL/SoAwCIqRBqsy40yB/TH2qF6PJinRJEJcREoGqE7fZERERUvPh0YJWda0CLt4qmXVVZ08TJUWWDddf3UFUDGk1Vk8WkhpKIiIhc5NOBVdK1LFzNzCn052lXsyJyDGJanOAA27f8vzFdMePhVub7v207CwCYs+1MoZeNiIiIPMenA6sxf+4ttH33bVTVfNvfT0KeUaSf9AIrQNsD8Oy1GwC0cxQWh+EfiIiIyDGfDqx2nUkttH2HBfnj5b71AIi2Uh/f0wz1qpSFv6qn3/PdayMk0A9VI0I0j32may0AQIu48jb7lcDW60RERMWVTwdWheG1/g3MtxtVt/T8u71pdSz9X2dNYDSqdz0cfqsfggP8NftoGisCqrIhgeZlDaqWAwDUrhxeKOUmIiKiguMAoQXUtV4lrDlyyXw/skwQAPuTONeIKgNAtLuyp2PtKAxtFYPnTT0IAWBQs+poUK0c6lUtW/BCExERUaFgxqoAAvwkzHq0jWaZs3GmGlYvh82v9sADt95id5tAfz+8d3dTxFQIU+1XYlBFRERUzDFjVQDWbaOs1a0iqu3uahHj1uOIiIioZGJgVQC1KmnbOw3vUENzv1pEKBKnDijKIhEREZEX+WxgFT92kduPKRcSgLCgAFy4no0udSvh8/uaAwD+fqY9yoUGolalcMzdmeTpohIREVEJ4bOBVX60rVkRF69n48L1bIzqVRflTL32msdVMG/TrV5l1Igqg6dNQyYQERGR72DjdRfd1SIGn93b3DyQp71G6hXKBGH16K6oW4UNzYmIiHwNM1Yu+G9MV8RWCIOfn4TP722O7zacQmPVGFVEREREgI8GVicuZbi1/S0Vy5hvx1UMw6TbG3m6SERERFQK+GRVYGpWrreLQERERKWQTwZWB89fd3nb8mGBzjciIiIigo8GVq//s9/lbbvWrVSIJSEiIqLSxCcDK1c1jYnACz3rersYREREVEL4ZON1V/RPqIpp97f0djGIiIioBGFgpfJ011rIzjXg8U41ERUe7O3iEBERUQnDwEqldXwFdK9fxdvFICIiohKKbaxUlClqiIiIiPKDgZXJ58Oao1V8pLeLQURERCUYAyuT25pW93YRiIiIqITzucAqjaOuExERUSHxucCq+4drvF0EIiIiKqV8LrC6kpnj7SIQERFRKeVzgZWe29m+ioiIiDzApwIrWZZ1lwf4S0VcEiIiIiqNfCqw2nrqqub+sDaxAICaUWW8URwiIiIqZXxq5PUcg1Fz/9aaFXF702i0qcHxq4iIiKjgfCqw8pe0VX5GWUa7WhW9VBoiIiIqbXyqKlCyCqzsNLkiIiIiyhefCqz8rNqoN4mJ8E5BiIiIqFTyqcBq44kr5tsv962H2pXLerE0REREVNr4VGD16cpj5tusBiQiIiJP86nASm314RRvF4GIiIhKGZ8NrIiIiIg8zWcDq+BAn33pREREVEh8NrqoVSnc20UgIiKiUsZnAys/ifMDEhERkWf5bGDFuIqIiIg8zWcCK4NRO74CM1ZERETkaT4TWP13VDu8wiPt471TECIiIiq1fCawyskzau7HRoZ5qSRERERUWvlMYGUwOt+GiIiIqCB8JrAycg4bIiIiKmQMrIiIiIg8hIEVERERkYf4TGCVa7AEVp/e28yLJSEiIqLSymcCqwnz9ptv167M6WyIiIjI83wmsMrOtXQLDPT3mZdNRERERcgnIwwGVkRERFQYfDLCCA3093YRiIiIqBRyKbCSJKmvJElHJEk6LknSWDvbDJUk6aAkSQckSfrFs8X0rKoRId4uAhEREZVCAc42kCTJH8CXAHoBSAKwTZKk+bIsH1RtUwfAqwA6yLJ8TZKkyoVVYCIiIqLiypWMVRsAx2VZPinLcg6AOQAGWW3zOIAvZVm+BgCyLKeAiIiIyMe4ElhFAzirup9kWqZWF0BdSZI2SJK0WZKkvp4qoCcYjRwclIiIiAqf06pAAJLOMutIJQBAHQBdAcQAWCdJUmNZllM1O5KkJwA8AQBxcXFuFza/rmTmmG+XDwsssuclIiIi3+JKxioJQKzqfgyAZJ1t5smynCvL8ikARyACLQ1Zlr+VZbmVLMutKlWqlN8yu82gylgF+PlkR0giIiIqAq5EGdsA1JEkqYYkSUEA7gUw32qbfwB0AwBJkqIgqgZPerKgBZFrMDrfiIiIiKiAnAZWsiznARgJYCmAQwB+l2X5gCRJb0qSdLtps6UArkiSdBDAagBjZFm+UliFdleOKrCS9Co2iYiIiDzAlTZWkGV5MYDFVssmqG7LAEaZ/oqdnDxmrIiIiKjw+USDo6//O2G+zYQVERERFRafCKxWHbYMqxUc6BMvmYiIiLzAJ6IMdZbqx+FtvVYOIiIiKt18IrDq2aCK+XaNqDJeLAkRERGVZj4RWLWMr+DtIhAREZEP8InAShkfdPv4nt4tCBEREZVqPhFYidEgAD8OYkVERESFyCcCK2USZj/GVURERFSIfCOwMlUFSsxYERERUSHykcCKGSsiIiIqfD4RWJniKraxIiIiokLlE4HVjtPXADCwIiIiosLlE4HVkgMXAACMq4iIiKgw+URgpQhgIysiIiIqRL4VWPn71MslIiKiIsZIg3zTzp+An+/2dimIiKiUYWBFJd/l48DZre49Zv5I4Phy59sl7QAmRQDXz+evbERE5FNKfWCVlpULAGgSE+HlknhQTiawdbplHAlf90VLYGavwtn31m/E/5NrCmf/VDiungQOzvN2KaikWfu+uJAiKoBSH1jdO30zAGBvUpqXS+JBKyYBi0cDRxZ7uyQlz7YZwJUTbjyAHR7cYjSKwN/bprUDfn/I26UoWsXlvS8KNzPy97i8HCDvpv31q97O336JVEp9YJWcesPbRfC8rKviv3IQPbsN2PxV0ZYhJxNY/LLzA/n18+KAryfzCpDrxudjyAPSL9hfv+FT4MY1+wddWQYWvQRM7+b8udLOWWUECyE7mJYELJ9g//0pif6bCkyuDtxI9W458rK9+/zesOw18d47ChyKWto5z+8zcQMwJRo4vsL9x35UH3inmvPtWBtQ9GQZWD0FuHxMHMf/HVu8vstuKPWBVakYu2rbDGDPb5b7yotSfvwzewJLxgIr3wJOrQX2zAG2zSzcMm2aJqrJlo6zv821RHEgW/eB/vr3awLf93f+XNdOA/88A/w7Bviwnv2T9vIJwLvxwMeN9NfLpgAm20n28uIB4OOGwNZvbd9roxFY+D/gwn7n5Xbmr8dFMJi8s+D7Ki72mr6nWVe8Ww5ftOtn8d/RxUreTXHicib9grjwyY+sq+KC6sgS8Ts6siR/+7Hn7Bbx/9S6fJTtCiAbnG+nF1hlpIjfbE6WdnlOJnD1lPtlIa2sq+LC7IfbxLlsy1fA3t+9Xap8Kf2Bld7CpO3ArIEiLVwSLHoJ+PsJ1QLlVVn9+Nd9IL6Ufz8JLBpVeOW5mQGc2yFu75hlWX5+D/BdP8uBXWnwfXyl/X25ElTMfw7YPRvY/p24v/NH8f/0Rv1sT7adwEt2kBla/zGw4g1xWzlInvwPNt+g60miHL8Mtd1H0g7bg64jBtP3z52r45RDRdN26PLxfDbYV71fKYeBjEseK1KpIstA4noPZ0bsHBfUFo4CvmhlyXrb82E9ceHjzLVEceGj9l4NcUGl/LaTdznfjzNntwG51llI1etM2mE57sgyMHuo4+OOUzrv4co3gH2/A0te0ZZl9hDgs2YFeK4CuJ7suGnDqndEu7Hias8ccdGslpetOjaWzGx+6Q+s1Cmr7DTgxCpg3rNA4jrgynHvFaxATD/6haOAE6vtb5Z+sXCefko0cPRf2+WLxwBnNgLJu8V9SedAn34BOLPZteeZ+wSwfKLt8uWvi9f9fT9g46fO95OXAxxebAqUrFzYB6z7ULRbW/+Rqdymn4Xele3uX8T/61ZVHO/XBmZ0F98ttYwU0RjWYeN3N06u0251v+1Q6hlLIOyqL1qKk2NBTGsLfN6yYPtwxR+PaL8n6mC7uFbp7PwBmDVA/H+/juu/CUfMPzcHrznRlOVxlrV11adNgU+bAJeOAhcP6hcoJwP4a4T4HSweY3sidebaaZGV/+lOcfGmziJnXgH2/mH67Y0Uy/OygWNLgTn35f916Z7QTc+780eRtVac3pD/5ymojxoAn7ewv37te8W33diSV0USYPdscV/9uV70QI2AF5X+wEp9Z2qc+HFeOmxZNjka2Ph5wZ/o/B5xVVWYds0WV2X7/hD3czOBn+6wv/385yy3jQZgxw+AIVcEGjt/dN6258RqcTB0lnVQslZGUyDi529aYXr3r58XB6LlE4Dp3YHv+ogrXYV1WQ7OEwHJ3t+ADZ8Ap3QConRTNuXSEfvlmveseL7V7wBzhgGz77Ld5uuOwMo3tcuU8stG27pkvZS/LAOZpvfowFztuh0/iP8/DrJ9nPpAkpMlgjZXAwG97a6dFp9X0nbt8k8SxPvgKqMLVSXO7PpJ/L/p4AT+TjX93965neJ1uNrJ4MDf4nui2DnLclv9WnJviP0uedX9QBMQWZDZOpnK/FAu6g78DWSmAGum2t/2j0dEht0p5fvk4Het/m7rluuEtlfc+T0uPC+AL1sDX7XTLju0QPzf9IXlmLX1W3Ei1fuOnVwjMqXWlAz0mY3AN51hfp2bvxJZtbkjTGXdrX1cXrZ4LfkJImVZBIqJqqBJfSzQe1/+ehz4rq/rz/HnY8CPDo7fgOvH6uLgerJ4v9Xv2fGV2t/xO9XENukXgc3TtI9X3t/sVM9kOb2o1AdWDn3VTlxNLRsv7h9dKlLK1i4fE1dFjnzTWVxVFaZ5zwA/DXZ9+2NLgf/eF8HUvj+ABc8D6z4S1V7znwPerCAOcMm7xZd9+/eWgyEAbPpS/HdWXbd0PPDPs8A50wldMh28c00N29POiOqzDZ9aMj1/jbA8XinLl21FOX5/CPigjuPnTDFdHRvsVOceWy7anJzbITI2rjr5nyVjdWyZ5WpKySqpD67HV4jyHpqv3YfRaDlxrHZwtWjMs/xfMhb452lLRsEZ68DKkCeysQDwsxvfET1KlSsgPjNXOhjs/R3Y+AVwzRR4rv/Y/ra7fhbvW26W5bentudX8f+nO4DPmgNfdXS97LKsbTB96ZDldoYpg7t5mgg0d/4ovhuGPMf7VD7PY0vFn7VzprHO1CcDo1EsmxQBnN+rX04A8AsQ/5O2i/ZPegHHgb/tfy8yLgHTe5gCCFMAcnihCE6Td4uLFKPBcmJWfpt5N0VbxUkRohMKIC58rLMf33TWf17lNVpTZ61SDth/rN536sdBIlP6fm3tcuvvuvIbNOba37/a1DiR3bf+fBR7/7AN6GSjOD/M6i/abf46zKoMfqbvhWo/+34HzmzSPof68/ysBTBDNSzM/j+Bk6stwezPd4vf8KQI8VsCRBZ9/nNiW0D7WVpTf5b2OHq8Kxw9/tRa8X+7qn3vz4O136lcU1OJc1YXf/ZIkvj8rX+jZ7cCx/LReaGIBHi7AIXN6GoGYOH/LCeUcefFiXvXT0BgGWCzKcBoMsSzhbuZIQ6sgSHi/qm1IlOToBoR/Ga69jFnNrr3HKvfFq+jhan6aM1k7fo3Iy23F74o/k9Kc94GQy0nHdj9s+W+n59ocL9otP3HJOlk99SZRGeUTMf+v/TXz1a9h+YMmgvmjQRqdrFdrnyP1N+nPXPEf+uquR8GiuqBSVZXypeOABGxQFCYOCEqB/pZqgb8OZmibdKJVUA7B1UmGRdEprDLWCA9WTTYr9RArMtOE3+BYYB/oO1jc7PF+pAIy3fPkCcuMkLLaz/75RPEd7C7TgCkNvdxx+vVtnzj2nbuBMSKFZO02auvO1o+B8nqOlKd0Z2YKg7i1xJF5rDDi+Lkuu5DEdTofV8VR0zV4keXAdWbi/dv1gDL+gNzgQrx4qRStqpYpmSMlJ5tOenA25XF8ea1ZPvPZTSIDGyz+0UAteUb22rpBS9o7weEAuWqAU+uA7Iui2VftRPfHUB0Qun/ngii7Tm9UWRELx8Bmj8IVKylP8CuddbKnm3Tgdi2wC3txX31cyvZX0OeuDjb+JnVg99Un0AAACAASURBVO30SFKOldd13r/tM7Un/MMLgIamLLKS8XpyreoBqt/5jWtiaJvmD2rXv1kB8A/SLwsgvgNnNlq+f1dPiD9ryus7vtzynm74BGg/0vJeZKeJ79mv9wLRLYEWDwNVGmvLCFg+S8D23AFYjvcPLxCZpS6viOO14tJRUYZ2piYNSpvRoDDL42t2Ax76R7vfI0tEtZ5S1vzQPVdLoipz3QfAaxctxytl3ELrY2wxUeoDK4NRfFjVI0IARz031Vfpk+10x/28FXDvbKBSPc8Ubko0UP4W4EXTFe0Pt4n/6sBqSkzBnyf1NLDqLde3P7QA+O0BIKisaYGbXSuzrogG98WFo3Zo1tLOWKqxrGWnWXokAfarU+y1ufiyjfjfbbwIYPTs/U1k23IygLZPaQ96ah+ZgqiaXS1DC6izM1PjgAa3A/fovJb3aooTVngV4N5fREbkRqoIjifoBNTWQ2pkpAAzewO1e4jvSqSTRs6yLNrFNX9Q/HbSkmy3uXFNbBcWabsOAH69TwQ+fSYDFW6x/1zq37E168BKzWgA/ANEQ+TLR4H/3rW/rbXMy5bbaedETzi19R9bMniPrQCiW9j/7uRmiiDm7Fag44u267d8I4K9dR+6Xr68G2LA1CnR2uX/qaofHVX3y7Joz6hY/zEwLjl/ga9ixSTx/9Ukkak5q9PGbO4I8d10VcZFEdz+4sIF8NGlQFhFbZWwOjun9/kcUbUrVdoA6WXMF/4P6DpOexHs6EJV3QFIYT1kzP65lv2d22Fblf1uvOV2RoqopVB/D/f9qX1NyrlGNoiLJqNBVJErAyLnZQMJQ4BPm4lt+r4L3PqUWHfS6niafgH49R7L/eMrREYyMNT+a7aWlwOknbVdfu2U5Tedk2kJrBRXTzo//nhBqQ+slCC4b+NqQD6aVWhcOSZOjv0/ANo8LjIy9QcAtVwYF0mWRYYi2irVnnpaf3tvUgKRHNMVz5VjAHqL21dPOn/8zzptmbwp67LzbZySRbCiZi9bprB3kndUPag+kWSn2g80FIZc+2O9WFdRKpQq2oyLwIwe2nV6+1J3z796ytIDatsMy34cSdouMoybvwYmXAZu6JxklBPDpDT9jMORReJ/5iVg+FJRPR2t0zDe3vgq5/c6DkYMOcCaKSKocteO7003ZOCCTrWf2syeQKeXHLelU4IY68Aq4xKw9FX3y+eKD2rbX6fXFGBmH+DivoI/r70Lx+Mr7QdVjsbQcSWoAkQVv7maX4deYOXqcWT7d8BpVZXg30+JIVwU2Wki+HEkT6kqNb1Wd2oq9JpR/PWY/rZr3wc6jRbVmFtVmeSVb2rbni55BWikag+WvAuo2kRkxT7USTRYB1aybPW5WX2G858D9s6x3Y/eb1YdVH7WHLj/L6BOITfDcVOpb2NlMB3Aqt1w0MjZXYtHi95k26aLdiDqMaZsCmBq+7J1uhiYUmkH40jaOeCTJsDuXz1XZndctGobsXScKE/SdvFF9kX/jnX/MeqeQ/nx813iSk6vN6NCNjp+HncHaFwxETa9FI8vF+03dv6Yv27lSttDY65tw3pAtBFSO7zQ/r6yrgBvlBdtpHb/KkZYV3zdUb8a4tpp4JtOwMF/bNcpJlezP96atW+6iDIfWqjNhhrzRFWNM+s+dG0sJWubPNDJJj/0Oj54IqhyxFE7Qb12eZ5W0G7+6uzxnl+1AffUODHkRXHxThVttbg9X6vaOn7bFfjvPeBdO9lj6+zw1m+19607GugFVXqOr7D9Ps6+q3AGoi2AUp+xysoRB7Dhh0Y42dJN6i+ZeoypjBRxdVynp0j/vldDLK9g+m895oseJYX7z1OeKau79NLyqadtsxu+JNcLU4Uk7xSBzuZpwH1/6F+Ny0ZLD0k96uqANyKBpsPsbwuIA2BFOx0HXDn4OqP3HVI3ZHU2kr96iBTr38cFOyd76zZIBaWcFH67X7vcnfGClGyfI2e2aNvfOWoDRZ6Vcsj5NoXt6472v9PekGlVXaxkkfXIRu04kdYX6+5UtVt2qt+MABBV+I+vdK/6sRCV+owVAPjBCH/ZSc8fT/mgjoigc7NFzxyFkvpd+KJtBmLnT8BhB19S8l1Kl2R7VRzuXL3LBm0nA3uuuDAyd2GZXN3z+1S3DypJlo6z9BylovVdH2+XoHgFVXoclU82iqp1RfLOgk9uvf170fRBT8oB0fOzmCj1GSsAKAcvZBt2zwbKq9rkqFPLP94OvKq6ip4/sujKRaVLivWgjFRquNolnai4MRq0bSU9ESQ6apsKiB6rxYRPBFZhDrsDFpLsVGDNL5b71nX21j10iIiISgPZ4Hq7KU/p8ILzbYqIT1QFvh/o4rg5nnRyjfaK01AyZ+l2alQxaIuQX6FOetwREZH7ZvYu+ud0ZXLxIuITgVUHfwcjABeWU2udb1MaBJfzdgnyr64b008QEZFr9MakKmwFGVfNw3wisKJCEtsWCA73dimE/+UjeHZ1SgwiIiIX+V5g5ay7eUkREgFUbmi7vLdVA792hdgwvpPVlDVD7YxYXhQiYoB+bnR3B/LX42qsF67EiBwZ4MYo7M4M+jJ/j+tvNQZYgJe6vTe43TvPS94XVtHbJTDzvcCqz2RgyCxxWz1yc1svjRmVXz0mApUb2C5v/xzw4n6gXAwQXhXoOSl/+2//vOV2sE432dcvA3Wt6tEbFtJB7Y6vgWjVgHqaObtU2j5hfwwma89utd9115Hgss63IcqP+gPz97gWD7v/mNZ25nZs/oAY/d7eHGwd7QxG2+Zx7WMe05ms2pMiawJ3f2+7vM9k22XkG7q95u0SmPleYAVYJq+s0hjo/Q5QrSnQz4UBy7qOA551MBlrUXh6kziAtX4MuO0zYMBHlnXKVWP5WGDUAWD0ETEJ7+N2Rnuv1gx4eqPYZ1Rd7Tr1fGzWAVN0S/3JfR0JDANq93K+nZ7yccAwVQ+TQV9Ybg/4CHhGNaCp9ZRB9lSqB0S5GIQBYoLWZ7dpp2UICBWfhRL0hVUEKjqYGsSXKRPelkbhVTyznwrxwIRr7j/O0RyIarV7ibIO+SH/42NFuThPqn+w/vImLoxM78ykNOD5XUDjwbbH46AyltshOheEXcdZbutdMForRlkQGw/+IyYmJsG/+Axy4HuBlWwUJ9RH/wX6vSdmEFdmNa+S4Pixze4DKtV1vE1hq6Kq/gsOFwHW8KXAuPPiqlFPdEvg4YXiwK3o9ZaYobxKI7FP67nLWjxiuW1d5WgdqD21Hhh9XLvMumqg91v5m8YDECcO6wNcTGvxv2qCNnN3m9Xo1NbVlWrdXhPvy6uq0XzH2JkLsVpT28/ez/RDjjVNrjxiBRDXDvl210zn27ywx/H62FtdP/k54soJpdt41UTdTgz5wfk2zl6bPWUq2S573mrKjPJxttvU7mX7fcmPwFDg1mfsr39uJzB8mWv7sjfptiOSHzD6mAhaWj1mycirjToMPPAnMPqomPPNlcBKmS1CzdULKvV29/1uuT34GyCmjc72dgIxZyrVBQJC9Ne9choYnwK0edKyrHoz4JVE4PHVwKs6jZ1Hqnpyv3YBLk1AHxYFjLcaldzVz7sganUTkxL3dWMU826v5b+6l1xWqgOrC2nZqIg0JMlRloXKj/CW9rYzZd//h+X2mBO2WZziKu5WICjM8TY1OgH3zAaa3CMOKh2eB0IrWNbXUWWTolsBfv7ids1uopr0kcX29101AQg3ndyUq8CEu0U15ODpInBt9ZhoC9LIag6wQAflVoInP3/bE469SWwDQ7XBVJeXbZ9T4R8o3hflij8gFChT0bYapEZn28cq5QKAXm+KzF9kTdvqxTq9gSAXG/gn3O18G3VwrOexpdqrdmvjHEx/46c6GaoPvn2m2G4LAF3GiBM1AFRvLgJsexxNnGveJp+Ho2b32S6LrCHee4V1oAUJuO83oI6dEbYnqCaKdhY81usPhyfg0ApAXFv9dVUaAyHlxW1Xs62PrdDelyQgvLIIWgZ+ZGniIPkDlRuJ2+WqaR8TqxPcWHtije375pePrECNLsA9PwOdXzbd1/k9qT97d6tEH14ojkHNHxTvtfK5SxIQEAz0esOyrSyLbfTe6yfXiotupSo0MNR+0Db0R8vtWt2AgCDt+ri2QIPb3Hsd+WUvUyP52y6r3EBU91r35h51WCzXo3dRYu2en4HGdznfzkeU6sAqJT0bO0KeRoxkmpX8fwcd92IrE6W9/dA8oO3TlnY7yo//5VPiRAJYDlwKeyfh4qBqY2Dwt/oHlV5vWW4PmyMOSi8dEbf9/ID4DsAdXwH3/mL7WHs6/g9oMlRkeyRJBB5DvgdGrAI6jxHbKAFSRBwwTDWZdVw7ywE2IsZ230rwoHeg7/G65XZAsHjOIT+IIE+P8rmq208p+231mAhI1UYdFv+VE7p/oMj8qfd176/i4Hz/H8A41Sj7dVXTq+hdOVZ38eTqiL2sQo0u2gDc+rsaphrXy191omjnIBsTFCZe5xNrxMnN1SBSlwQ0u9928UtHHT8sLEp/ubozhZ+/yCrcbqpGrtVNLCtXTbRJ7DpOnKDV2/eZAjyyyHEWKShc+9vRoxcwKie9CvHA2NPAC3stJ6a6TqbgqaLTaUVNCZDLRAEjlttmkwERhMTearpt54QaWl4EqAM+AspUFsv8g8T3v2oT/cfcM1scJ5TXXD5OXMA2uA3obmoDo/t+qJbd+Y0IVl9JtCx72MHE3LGtRVA/6AtxnBn6kzh2KQJDgYEfi9t6VfV1+ohMdbWmtuse/BvoqDNVirpq2zrb9sBc5UVpl6t/G7F2Am09zR4Q565XTgOthtuuVz7vQNMxsUK8yP6+dgFobTVHrnIuG77UEugC4ndQS2eybQBoqnPhAmhreOLaA3d/5/SluDTETc9J4rPPTxBfTJTqwCrPaJXViHAy2rl/oOj1pVytlqsO9JsKPPCXyEoojw+LtHxh7/9DO9BkM6uDVH4altoTWdNz+7KmvupRsk9lq2qzes3uA+oPcLwfFxITiGmpbQQ7Lhl4bgdQr69l9NzYtuL2K6fF52Bt8LdA9/GWANeZRneIIO/xVcCgadp1gaHiJDp8iWXZq0mi/cLAj4AQq6u7ctXE98S6ByYA9HkH6PIKUNdOJqSpqo1JcDnglo7a9cPdbPQ74CPgqQ3aZXrByV0zxfdY7eEFwDNbLPf13mfFnVaD7NrrJDDmhDigD/pSZEbtee2CCMbUJOn/7d15sFxlncbx59f3ZiV7yGYSsgCjXCAbkUVAwiIQDAQQmYAYRJQalmJQqyARB1HKqRGn3GpwoqPO4JSIiANkKBykAEcFWYKETUAji0bUREAYoSBg3vnjPSd9uu/p231vzn1P37e/n6qu23365Pbb9+2c85x3a6nnxN77jp1WbdU5cZ0P5pdkvsw8bXnNTriQ/GfXKtXPSPfw6nio7Il8wmxp2SW+9XLtZukfnvfbDzpPmntI49ZRSRo/2//fqWRaB1avr3tfOYfZC5KxQWmYyo5pzI4hzDN8F//5azTzrjs50Y+e7Pcdk9NVala9GJixqO/Xe/vZ0gX3VT/X42b4z1LejOO9VvjjRHqRut8Hcn5hzt8zPa686wp/8Xvad2pb1Ocd2ncZs4aN9MeurP3O8p+ZXeuC1drN/mJxlwZd31P+Rjrqk9XHb/+wH9tU/3pZ05PAsU/SUn7ox/xnPQ2wPSdKZ/+wNthkJ+csWV0tsyTtcYQ/94yaUA2IWemF1F7H+xbp8+/z4ap7eO2M0UM/Jk19m78/racadFPZFqdsd+1hl0hrMt2m6blvdFI/MxY1/vvVW/5ZacKc/OP29H19HR18UW3dN3PW/7Q2jCKgoRsJW7Bpy1/U7+v/+pOo5A969cvlLz7DJ/lKRbr4KemNV6UH/kPa973+BP6p5ETQV1dXMxdulDbfLz17t/Tzq/1YjWikCczVdl3t+17pri/5g4SZP5hkHXi+/zl2erXVK8+q7+Q3Yc/cr3Y2aKq+VabZt6TnfU4kH7oP/3j+c5IPeGmP89tWSPeu8/dX3+R/1ncpLDxdeqiulXC/D/jP2gd/mN/FtN+ZvkXidxukbyRdvHufnN/ykh5opb4/qwtXSTckY1VWXtX46jY9yaQnkRHjkq6yjFP+3f9961e+Hz25cbfGOT/y/xcWnNr7uUWnS6+95A/4ux1UW+/ZLj2p+tVSjbod82Z9Tpzjv+vsg7dWv5x3ziHSsz+VJu/uH6cXPQddkN/yUW/y7n6gel6d7LKrbyX56ed7P5eeQEaOk867u/aL3lOjJ/k6mn94k0JkAs6MhbVdwfVGTaz9XI+Z6i8iNl4jzV/We/8RY/37y+sCrv96L8kPRTjpq323Dp7537Utqf2RdyxJy9kf786MHT31W9J1q3u36IxJWvf2Pknaa2X1PT2cjDVLhzjsc7L04yv952r2AdVzxvFfllZ8SXrzNd812XNS32VK6237G/lDQnaZKr2yRdr/nN7PnX5d7eSLD90uvf6y/+ykFxSVSu1EgPpuxEbHwjwT50oXPezPafVfjn7cP+fX0Xu+IX3/7N7bK91+rOCcnRjXOkiiDlYXX/+wTm3QRV6I9D+MmQ8HB51ffW7+4dJTDa7Yj/lHadsr0p2fqW7b91Tpketq95s0z98WnCod/8Viyz5Ypu0jPXtX82bc7pH+ivvYuvE70/dtPNW70fY8bzuu+T4hTd9Xmlt31V2p+K6JZ+/KHyy++ibptZd9sBq/m3RqMgD8+C/lD7rOHvwqleqsx+Fja09YoyfXthj+3V3+IH7bZa29l0ZdR3nWZtb92vsk6Y3Xqlfy9S0Xw0Y1Djzp/4U8lS4/CUXqXe/1J/b0SrjVZTkk6YwbpM33+bGMqZPWSV/cp9pNtGS1P+kvXOXLc/lL0jeXS7+5u9qa9f4bpf/MtMj1FSKy4fD9N/ru8M3317YqTJrfuBW7lTpaslra8E0/JqnRxJdmLnm68XON3l8arBaeLj39v9LLv+t7/1SZwyzGz+69zEvPyubHpOx7WnS6dM9XpLcmgWLqXvn/3iw5p4yuPac0kl6MNFo+5ugrpJvOz/8Kr/qW9VmZlrNm4yLzWnI/fIf/OptmkyPyWqS2101umr5Aeu7nvoXvsRukJzLdwZe/JL34jPRCg8lGJYs6WJVq4SofrNIr2qz0P0s2WL3n33oHq9AOusBf+e+MVdf4q/tmV4KVivSJP+zcaw0ljQZ2L7/SL2o4PTNe4UN3+O6WcW+RNiezlBau6ntw84duzxmLlhwY6w+QF9cdjKYny4/UHCid/zy8/nJ104fvrB2H2F95s9XqpcFq7qG+1aWvz+NuB/V/wd/dDpBO/15+K0sjY6b07gKfMLv2pFjpkhbXdcGedo30x8eqLbK7N2tBylhypm9JeOvyav31Z3mQVrxlcf8uVoqyZLVv6Tr8475r7vZP990N3Q4+8ujO/46+Lhp3xrzDpHEzfVdfnoWraocgDNS5P/PdzBu/3XifmftJlz0vXd5kKYupe/kW+ydu9hfj216RZtSN2zvj+9KWx31wXPVt6emfSFdnJjZMnNt8Mk9JCFaDZcHf+r7kaXtLtzSY8j9uZvVqrd6KElqojvlM832aGTWhf+MhOtHiM6Tdj/T3h42U9jyq9vlZma7KWUuls29rPqg9e6W5QxKUWpmRJ/km9d/cXX1c/3loddZaq7JBLh2vkwYrt7123FGe7Ji4/qhf2HawjJrox2gNRKXSfq2uRZk0vzqb9OCLfLdqo1mTFz5Y3iruoa34gvRCHy2AqUM+UnsRNXqS9NFfDF65UumkiXQdyKk90jM/6fvfnPx16cZzfTflEZ+ofW7lv/gLpxO/kj9sY/QkP2lqhz7GOrYZgtVgMfMnqm2vNt7nvJ9J/5TzgVq2Vlp61uCVDeXq7zoyrUyNz7MjuLQYrA6/VHr1eT9+a8Lcgb1mvyTlmzAnE+KSsuaNw4nBkZe1PuGiE1S6GocqaXAn7BTtyE+2Nr6ukbwZf3mOunzgr1GEfU72oWryHn4IQaOWMkla8F6/jMyffukXZc4aNVH6QB+zPevt9g7fktvX67WJzglWZVVGOtjygHOle/+19rmR46W1v+t9Elm2JkzZELc0WLW6PlSly7eULvu4n4k32NJxZdnuvGyLVYyGwEkBA3RozrIMsUonvZzw5eb7mvUOVQPR1d3a67WBzglWeasIh9DV7aftdw3vHayk3utqvbXJcgZAq9LPVisDYFNmYUKV5C8sLv1D7SKMsQcroBOcuG7nWu+GuKiD1Ui9Xn1Q5oG6fp2TRsoYSIp4dY9o/89U/bIWO4JVm46nWL2+diFVAL0t6uekkshEHaze15X56oeBfukogHCszcdYzT+s7BIAaHNRr7x+dNcD1QfteqAGUNXuwQoAmoi6xeqAyhPVB+3whcrvuqJ/q9QCnWZM8lUk85eVWQoAGLCog1WNdmjCP/jC5vsAnWz8TOmiR/wabwAwBHVEsNpeGRZ3nycQk7zFAgFgiOiMvNHqOj4AAAA7oSMSh7OusosAAAA6QEcEK1qsAABACJ2ROAhWAAAggI5IHHQFAgCAEDoiWNFiBQAAQuiIxOEIVgAAIICOSBx/Wnhu2UUAAAAdoCOC1Yt7vKfsIgAAgA7QEcGKrkAAABBCRyQOq3TE2wQAACXriMSxXSy3AAAABl9HBCuWWwAAACF0RuIgWAEAgAA6InEweB0AAITQGYmDr7QBAAABdEiwsrJLAAAAOkBnBCsAAIAAOiJYsYwVAAAIoSMiR8+McWUXAQAAdICOCFbGGCsAABBARwQrAACAEAhWAAAABYk3WG17pewSAACADhNvsNp4TdklAAAAHSbeYFXpLrsEAACgw8QbrLqGlV0CAADQYeINVhWCFQAACKulYGVmx5rZk2a2yczW9LHfKWbmzGxpcUUcmM0vMngdAACE1TRYmVmXpKskLZfUI+k0M+vJ2W+spAsl3Vt0IQfi0b+ML7sIAACgw7TSYrW/pE3Ouaecc9skXStpZc5+V0i6UtJrBZZvwLYzxgoAAATWSrCaKem3mcebk207mNliSbOdczf39YvM7Bwz22BmG7Zu3drvwvYH32IDAABCayVY5UUUt+NJs4qkL0j6WLNf5Jz7mnNuqXNu6ZQpU1ov5QCkhV735opBfR0AAIBUK8Fqs6TZmcezJD2XeTxW0j6SfmRmz0g6UNL6sgewp8nvZ9v3LrMYAACgg7QSrO6XtKeZzTOz4ZJWSVqfPumce8k5t6tzbq5zbq6keySd4JzbMCglbpFzrvlOAAAABWoarJxzb0q6QNKtkh6XdJ1z7jEz+7SZnTDYBdxZxCsAABBKS9/74py7RdItddsua7Dvsp0vVgFIVAAAILB4V14HAAAILNpgxRgrAAAQWrTBir5AAAAQWrTBKm2wcrnLcAEAABQv2mAFAAAQWrTBio5AAAAQWrzBisHrAAAgsGiDFU1WAAAgtGiD1bBuP2i9qxLtWwQAAG0m2tQxb/IukqRz3jm/5JIAAIBOEW2wSldZGDOipW/tAQAA2GnxBisAAIDA4g1WzAoEAACBxRusEmasvA4AAMKIPlgBAACEQrACAAAoCMEKAACgINEGK8fS6wAAILBog9UODF4HAACBxB+sAAAAAiFYAQAAFIRgBQAAUJB4g9V2Bq8DAICw4g1WCVZeBwAAoUQfrAAAAEIhWAEAABSEYAUAAFCQaIOVcwxeBwAAYUUbrKoYvA4AAMLogGAFAAAQBsEKAACgIAQrAACAgkQbrBi6DgAAQos2WFkarRi7DgAAAok2WFWRrAAAQBgdEKwAAADCIFgBAAAUJNpgxcLrAAAgtGiDVTov0BhjBQAAAok4WCWMYAUAAMKIP1gBAAAEQrACAAAoSLTByrH2OgAACCzaYMW0QAAAEFq8wSrF4HUAABBI/MEKAAAgEIIVAABAQQhWAAAABYk2WJlLV14HAAAII9pgBQAAEBrBCgAAoCAEKwAAgIIQrAAAAAoSbbBi3XUAABBatMFqB4v/LQIAgPZA6gAAACgIwQoAAKAgBCsAAICCxBusHMPXAQBAWPEGq4QZX2oDAADCiD5YAQAAhEKwAgAAKAjBCgAAoCDRBiun7WUXAQAAdJhog9UODF4HAACBxB+sAAAAAiFYAQAAFIRgBQAAUJB4g9V2Vl4HAABhxRusEqy8DgAAQok+WAEAAIRCsAIAACgIwQoAAKAg0QYrhq4DAIDQog1WRCsAABBaxMEqxaxAAAAQRgcEKwAAgDAIVgAAAAWJN1gxxAoAAAQWb7BKkxVDrAAAQCARB6sUyQoAAITRAcEKAAAgDIIVAABAQaINVoxdBwAAobUUrMzsWDN70sw2mdmanOc/ama/MLOHzex2M5tTfFH7y0crRlgBAIBQmgYrM+uSdJWk5ZJ6JJ1mZj11uz0oaalzboGk6yVdWXRBB8yIVgAAIIxWWqz2l7TJOfeUc26bpGslrczu4Jy70zn3avLwHkmzii0mAABA+2slWM2U9NvM483JtkbOlvSDvCfM7Bwz22BmG7Zu3dp6KQEAAIaAVoJVXl9a7thwMztD0lJJn8t73jn3NefcUufc0ilTprReyoFg9DoAAAisu4V9NkuanXk8S9Jz9TuZ2VGSLpV0mHPu9WKKN3CWDl5njBUAAAiklRar+yXtaWbzzGy4pFWS1md3MLPFkr4q6QTn3JbiizlwjnmBAAAgkKbByjn3pqQLJN0q6XFJ1znnHjOzT5vZCclun5M0RtL3zGyjma1v8OsAAACi1UpXoJxzt0i6pW7bZZn7RxVcLgAAgCEn2pXXAQAAQos2WDnHtEAAABBWtMEqZQxeBwAAgUQfrAAAAEIhWAEAABSEYAUAAFCQeIMVg9cBAEBg8QarhFUYvA4AAMKIPlgBAACEQrACAAAoCMEKAACgINEGK1ZeBwAAoUUbrKoYvA4AAMLogGAFAAAQOvu9MAAABh9JREFUBsEKAACgIAQrAACAgkQcrBi8DgAAwoo4WHlmDF4HAABhRB+sAAAAQiFYAQAAFIRgBQAAUJBogxUrrwMAgNCiDVYAAAChxR+smBUIAAACiT9YAQAABEKwAgAAKAjBCgAAoCDRBqvnp71D73z9C9o2cY+yiwIAADpEtMHqr92j9Rs3Ta5rRNlFAQAAHSLaYAUAABAawQoAAKAg0Qar8aOGadHsCRo1rKvsogAAgA7RXXYBBsuB8yfrxvMPLrsYAACgg0TbYgUAABAawQoAAKAgBCsAAICCEKwAAAAKQrACAAAoCMEKAACgIAQrAACAghCsAAAACkKwAgAAKAjBCgAAoCAEKwAAgIIQrAAAAApCsAIAACgIwQoAAKAgBCsAAICCEKwAAAAKQrACAAAoCMEKAACgIOacK+eFzbZKenaQX2ZXSX8a5NdA/1Ev7Yc6aU/US/uhTtpTiHqZ45yb0myn0oJVCGa2wTm3tOxyoBb10n6ok/ZEvbQf6qQ9tVO90BUIAABQEIIVAABAQWIPVl8ruwDIRb20H+qkPVEv7Yc6aU9tUy9Rj7ECAAAIKfYWKwAAgGAIVgAAAAWJNliZ2bFm9qSZbTKzNWWXJ2Zm9k0z22Jmj2a2TTKz28zsV8nPicl2M7MvJ/XysJktyfybM5P9f2VmZ5bxXmJiZrPN7E4ze9zMHjOzv0+2UzclMbORZnafmT2U1Mmnku3zzOze5O/7XTMbnmwfkTzelDw/N/O71ibbnzSzY8p5R/Ewsy4ze9DMbk4eUyclM7NnzOwRM9toZhuSbe1//HLORXeT1CXp15LmSxou6SFJPWWXK9abpHdKWiLp0cy2KyWtSe6vkfTZ5P5xkn4gySQdKOneZPskSU8lPycm9yeW/d6G8k3SDElLkvtjJf1SUg91U2qdmKQxyf1hku5N/tbXSVqVbF8n6dzk/nmS1iX3V0n6bnK/JzmujZA0LznedZX9/obyTdJHJV0j6ebkMXVSfp08I2nXum1tf/yKtcVqf0mbnHNPOee2SbpW0sqSyxQt59yPJb1Qt3mlpKuT+1dLOjGz/VvOu0fSBDObIekYSbc5515wzr0o6TZJxw5+6ePlnPu9c+7nyf3/k/S4pJmibkqT/G3/kjwcltycpCMkXZ9sr6+TtK6ul3SkmVmy/Vrn3OvOuaclbZI/7mEAzGyWpHdL+nry2ESdtKu2P37FGqxmSvpt5vHmZBvCmeac+73kT/CSpibbG9UNdTaIku6KxfItJNRNiZIup42Stsgf5H8t6c/OuTeTXbJ/3x1/++T5lyRNFnVStC9KuljS9uTxZFEn7cBJ+qGZPWBm5yTb2v741T2Yv7xElrONdSXaQ6O6oc4GiZmNkfR9SRc55172F9f5u+Zso24K5pz7q6RFZjZB0g2S9srbLflJnQwyM1shaYtz7gEzW5ZuztmVOgnvYOfcc2Y2VdJtZvZEH/u2Tb3E2mK1WdLszONZkp4rqSyd6o9JM6ySn1uS7Y3qhjobBGY2TD5Ufds591/JZuqmDTjn/izpR/LjQSaYWXqhm/377vjbJ8+Pl+92p06Kc7CkE8zsGflhI0fIt2BRJyVzzj2X/NwifxGyv4bA8SvWYHW/pD2TWR3D5QcYri+5TJ1mvaR09sWZkm7KbF+dzOA4UNJLSXPurZKONrOJySyPo5NtGKBk3Mc3JD3unPt85inqpiRmNiVpqZKZjZJ0lPzYtzslnZLsVl8naV2dIukO50fkrpe0KpmhNk/SnpLuC/Mu4uKcW+ucm+Wcmyt/rrjDOfc+USelMrNdzGxsel/+uPOohsLxq+xR/4N1k58h8Ev58QuXll2emG+SviPp95LekL86OFt+zMHtkn6V/JyU7GuSrkrq5RFJSzO/54PyAz43STqr7Pc11G+SDpFv8n5Y0sbkdhx1U2qdLJD0YFInj0q6LNk+X/4kvEnS9ySNSLaPTB5vSp6fn/ldlyZ19aSk5WW/txhukpapOiuQOim3LubLz7J8SNJj6Xl8KBy/+EobAACAgsTaFQgAABAcwQoAAKAgBCsAAICCEKwAAAAKQrACAAAoCMEKAACgIAQrAACAgvw/gs4H2In/aVQAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f63cff77d68>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(best_solver.train_acc_history)\n",
    "plt.plot(best_solver.val_acc_history)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Validation set accuracy:  0.355\n",
      "Test set accuracy:  0.307\n"
     ]
    }
   ],
   "source": [
    "y_test_pred = np.argmax(best_model.loss(data['X_test']), axis=1)\n",
    "y_val_pred = np.argmax(best_model.loss(data['X_val']), axis=1)\n",
    "print('Validation set accuracy: ', (y_val_pred == data['y_val']).mean())\n",
    "print('Test set accuracy: ', (y_test_pred == data['y_test']).mean())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
